Capstone project for Bachelor's in Mechanical Engineering 2011

Dependencies:   FatFileSystem MAX3100 MODGPS MODSERIAL SDFileSystem mbed

Committer:
lhiggs
Date:
Wed May 29 00:45:41 2013 +0000
Revision:
0:0529d2d7762f
Broken, after updating all the libraries. RPC has issues with new mbed libraries.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lhiggs 0:0529d2d7762f 1 /* ______________________________________________________________________________________
lhiggs 0:0529d2d7762f 2 File: UM6_usart.h
lhiggs 0:0529d2d7762f 3 Author: CH Robotics, adapted for mbed by lhiggs
lhiggs 0:0529d2d7762f 4 Version: 1.0
lhiggs 0:0529d2d7762f 5
lhiggs 0:0529d2d7762f 6 Description: Function declarations for USART communucation
lhiggs 0:0529d2d7762f 7 -------------------------------------------------------------------------------------- */
lhiggs 0:0529d2d7762f 8
lhiggs 0:0529d2d7762f 9 #include "mbed.h"
lhiggs 0:0529d2d7762f 10
lhiggs 0:0529d2d7762f 11 #ifndef _CHR_USART_H
lhiggs 0:0529d2d7762f 12 #define _CHR_USART_H
lhiggs 0:0529d2d7762f 13
lhiggs 0:0529d2d7762f 14 #define MAX_PACKET_DATA 40
lhiggs 0:0529d2d7762f 15
lhiggs 0:0529d2d7762f 16
lhiggs 0:0529d2d7762f 17 // Definitions of states for USART receiver state machine (for receiving packets)
lhiggs 0:0529d2d7762f 18 #define USART_STATE_WAIT 1
lhiggs 0:0529d2d7762f 19 #define USART_STATE_TYPE 2
lhiggs 0:0529d2d7762f 20 #define USART_STATE_ADDRESS 3
lhiggs 0:0529d2d7762f 21 #define USART_STATE_DATA 4
lhiggs 0:0529d2d7762f 22 #define USART_STATE_CHECKSUM 5
lhiggs 0:0529d2d7762f 23
lhiggs 0:0529d2d7762f 24
lhiggs 0:0529d2d7762f 25
lhiggs 0:0529d2d7762f 26 // Flags for interpreting the packet type byte in communication packets
lhiggs 0:0529d2d7762f 27 #define PACKET_HAS_DATA (1 << 7)
lhiggs 0:0529d2d7762f 28 #define PACKET_IS_BATCH (1 << 6)
lhiggs 0:0529d2d7762f 29 #define PACKET_BATCH_LENGTH_MASK ( 0x0F )
lhiggs 0:0529d2d7762f 30
lhiggs 0:0529d2d7762f 31 #define PACKET_BATCH_LENGTH_OFFSET 2
lhiggs 0:0529d2d7762f 32
lhiggs 0:0529d2d7762f 33 #define BATCH_SIZE_2 2
lhiggs 0:0529d2d7762f 34 #define BATCH_SIZE_3 3
lhiggs 0:0529d2d7762f 35
lhiggs 0:0529d2d7762f 36 #define PACKET_NO_DATA 0
lhiggs 0:0529d2d7762f 37 #define PACKET_COMMAND_FAILED (1 << 0)
lhiggs 0:0529d2d7762f 38
lhiggs 0:0529d2d7762f 39
lhiggs 0:0529d2d7762f 40 // Define flags for identifying the type of packet address received
lhiggs 0:0529d2d7762f 41 #define ADDRESS_TYPE_CONFIG 0
lhiggs 0:0529d2d7762f 42 #define ADDRESS_TYPE_DATA 1
lhiggs 0:0529d2d7762f 43 #define ADDRESS_TYPE_COMMAND 2
lhiggs 0:0529d2d7762f 44
lhiggs 0:0529d2d7762f 45
lhiggs 0:0529d2d7762f 46 // Union for working with floats at the byte level
lhiggs 0:0529d2d7762f 47 //typedef union _fconvert
lhiggs 0:0529d2d7762f 48 //{
lhiggs 0:0529d2d7762f 49 // uint32_t uint32_val;
lhiggs 0:0529d2d7762f 50 // int32_t int32_val;
lhiggs 0:0529d2d7762f 51 // float float_val;
lhiggs 0:0529d2d7762f 52 // } fConvert;
lhiggs 0:0529d2d7762f 53
lhiggs 0:0529d2d7762f 54
lhiggs 0:0529d2d7762f 55
lhiggs 0:0529d2d7762f 56 // Buffer, buffer index, and TX status flag for USART transmit
lhiggs 0:0529d2d7762f 57
lhiggs 0:0529d2d7762f 58 extern uint8_t gUSART_State;
lhiggs 0:0529d2d7762f 59
lhiggs 0:0529d2d7762f 60 // Structure for storing TX and RX packet data
lhiggs 0:0529d2d7762f 61 typedef struct _USARTPacket
lhiggs 0:0529d2d7762f 62 {
lhiggs 0:0529d2d7762f 63 uint8_t PT; // Packet type
lhiggs 0:0529d2d7762f 64 uint8_t address; // Packet address
lhiggs 0:0529d2d7762f 65 uint16_t checksum; // Checksum
lhiggs 0:0529d2d7762f 66
lhiggs 0:0529d2d7762f 67 // Data included for convenience, but that isn't stored in the packet itself
lhiggs 0:0529d2d7762f 68 uint8_t data_length; // Number of bytes in data section
lhiggs 0:0529d2d7762f 69 uint8_t address_type; // Specified the address type (DATA, CONFIG, OR COMMAND)
lhiggs 0:0529d2d7762f 70
lhiggs 0:0529d2d7762f 71 uint8_t packet_data[MAX_PACKET_DATA];
lhiggs 0:0529d2d7762f 72
lhiggs 0:0529d2d7762f 73 } USARTPacket;
lhiggs 0:0529d2d7762f 74
lhiggs 0:0529d2d7762f 75
lhiggs 0:0529d2d7762f 76
lhiggs 0:0529d2d7762f 77 uint16_t ComputeChecksum( USARTPacket* new_packet );
lhiggs 0:0529d2d7762f 78
lhiggs 0:0529d2d7762f 79
lhiggs 0:0529d2d7762f 80
lhiggs 0:0529d2d7762f 81 #endif