Satellite Observers Workbench. NOT yet complete, just published for forum posters to \"cherry pick\" pieces of code as requiered as an example.

Dependencies:   mbed

Committer:
AjK
Date:
Mon Oct 11 10:34:55 2010 +0000
Revision:
0:0a841b89d614
Totally Alpha quality as this project isn\t completed. Just publishing it as it answers many questions asked in the forums

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 0:0a841b89d614 1 /****************************************************************************
AjK 0:0a841b89d614 2 * Copyright 2010 Andy Kirkham, Stellar Technologies Ltd
AjK 0:0a841b89d614 3 *
AjK 0:0a841b89d614 4 * This file is part of the Satellite Observers Workbench (SOWB).
AjK 0:0a841b89d614 5 *
AjK 0:0a841b89d614 6 * SOWB is free software: you can redistribute it and/or modify
AjK 0:0a841b89d614 7 * it under the terms of the GNU General Public License as published by
AjK 0:0a841b89d614 8 * the Free Software Foundation, either version 3 of the License, or
AjK 0:0a841b89d614 9 * (at your option) any later version.
AjK 0:0a841b89d614 10 *
AjK 0:0a841b89d614 11 * SOWB is distributed in the hope that it will be useful,
AjK 0:0a841b89d614 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
AjK 0:0a841b89d614 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
AjK 0:0a841b89d614 14 * GNU General Public License for more details.
AjK 0:0a841b89d614 15 *
AjK 0:0a841b89d614 16 * You should have received a copy of the GNU General Public License
AjK 0:0a841b89d614 17 * along with SOWB. If not, see <http://www.gnu.org/licenses/>.
AjK 0:0a841b89d614 18 *
AjK 0:0a841b89d614 19 * $Id: main.cpp 5 2010-07-12 20:51:11Z ajk $
AjK 0:0a841b89d614 20 *
AjK 0:0a841b89d614 21 ***************************************************************************/
AjK 0:0a841b89d614 22
AjK 0:0a841b89d614 23 #ifndef PCCOMMS_H
AjK 0:0a841b89d614 24 #define PCCOMMS_H
AjK 0:0a841b89d614 25
AjK 0:0a841b89d614 26 #include "sowb.h"
AjK 0:0a841b89d614 27
AjK 0:0a841b89d614 28 #define PCCOMMS_STATE_WAITING 0
AjK 0:0a841b89d614 29 #define PCCOMMS_BASE_PACKET_READ 1
AjK 0:0a841b89d614 30 #define PCCOMMS_PACKET_READ 2
AjK 0:0a841b89d614 31 #define PCCOMMS_BASE_PACKET_BAD_CSUM 3
AjK 0:0a841b89d614 32
AjK 0:0a841b89d614 33 #define PCCOMMS_PACKET_ACCEPTED 1
AjK 0:0a841b89d614 34 #define PCCOMMS_PACKET_REJECTED 2
AjK 0:0a841b89d614 35
AjK 0:0a841b89d614 36 typedef struct _base_packet_bin {
AjK 0:0a841b89d614 37 uint16_t mode;
AjK 0:0a841b89d614 38 uint16_t length;
AjK 0:0a841b89d614 39 } BASE_PACKET_B;
AjK 0:0a841b89d614 40
AjK 0:0a841b89d614 41 #define BASE_PACKET_B_LEN sizeof(BASE_PACKET_B)
AjK 0:0a841b89d614 42
AjK 0:0a841b89d614 43 typedef struct _base_packet_ascii {
AjK 0:0a841b89d614 44 char lead_char;
AjK 0:0a841b89d614 45 char mode[4];
AjK 0:0a841b89d614 46 char length[4];
AjK 0:0a841b89d614 47 char csum;
AjK 0:0a841b89d614 48 char flag;
AjK 0:0a841b89d614 49 char trail_char;
AjK 0:0a841b89d614 50 } BASE_PACKET_A;
AjK 0:0a841b89d614 51
AjK 0:0a841b89d614 52 #define BASE_PACKET_A_LEN sizeof(BASE_PACKET_A)
AjK 0:0a841b89d614 53
AjK 0:0a841b89d614 54 #define BASE_PACKET_WRAP if(header_packet_in>=BASE_PACKET_A_LEN)header_packet_in=0
AjK 0:0a841b89d614 55
AjK 0:0a841b89d614 56 void pccomms_init(void);
AjK 0:0a841b89d614 57 void pccomms_process(void);
AjK 0:0a841b89d614 58
AjK 0:0a841b89d614 59 void Uart3_init(void);
AjK 0:0a841b89d614 60 void Uart3_putc(char c);
AjK 0:0a841b89d614 61 int Uart3_getc(int block);
AjK 0:0a841b89d614 62
AjK 0:0a841b89d614 63 void base_packet_a2b(BASE_PACKET_B *b, BASE_PACKET_A *a);
AjK 0:0a841b89d614 64 void base_packet_b2a(BASE_PACKET_A *a, BASE_PACKET_B *b);
AjK 0:0a841b89d614 65
AjK 0:0a841b89d614 66 /* Buffer sizes MUST be a aligned 2^, for example 8, 16, 32, 64, 128, 256, 512, 1024, etc
AjK 0:0a841b89d614 67 Do NOT use any other value or the buffer wrapping firmware won't work. */
AjK 0:0a841b89d614 68 #define UART3_TX_BUFFER_SIZE 512
AjK 0:0a841b89d614 69 #define UART3_RX_BUFFER_SIZE 512
AjK 0:0a841b89d614 70
AjK 0:0a841b89d614 71
AjK 0:0a841b89d614 72 #endif