Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:d6b18299a715, 2016-12-12 (annotated)
- Committer:
- Stephen_NewVistas
- Date:
- Mon Dec 12 23:19:30 2016 +0000
- Revision:
- 1:d6b18299a715
- Parent:
- 0:226550611f0d
- Child:
- 2:9ab591cf81b8
about to branch and make generic and not cpp
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Stephen_NewVistas | 0:226550611f0d | 1 | //#define TEST | 
| Stephen_NewVistas | 0:226550611f0d | 2 | #define DEBUG | 
| Stephen_NewVistas | 0:226550611f0d | 3 | |
| Stephen_NewVistas | 0:226550611f0d | 4 | #include "mbed.h" | 
| Stephen_NewVistas | 0:226550611f0d | 5 | #include "rtos.h" | 
| Stephen_NewVistas | 0:226550611f0d | 6 | #include "comms.h" | 
| Stephen_NewVistas | 0:226550611f0d | 7 | #include "rs485.h" | 
| Stephen_NewVistas | 0:226550611f0d | 8 | #include "uart1.h" | 
| Stephen_NewVistas | 1:d6b18299a715 | 9 | #include "BTpacket.h" | 
| Stephen_NewVistas | 0:226550611f0d | 10 | |
| Stephen_NewVistas | 0:226550611f0d | 11 | #define FX 0x02 | 
| Stephen_NewVistas | 0:226550611f0d | 12 | |
| Stephen_NewVistas | 0:226550611f0d | 13 | /*=========================================== | 
| Stephen_NewVistas | 0:226550611f0d | 14 | * These functions need to be completed | 
| Stephen_NewVistas | 0:226550611f0d | 15 | * | 
| Stephen_NewVistas | 0:226550611f0d | 16 | */ | 
| Stephen_NewVistas | 0:226550611f0d | 17 | int Bluetooth_ReceivePacket( Packet * ); | 
| Stephen_NewVistas | 0:226550611f0d | 18 | int Bluetooth_SendChar( unsigned char ); | 
| Stephen_NewVistas | 0:226550611f0d | 19 | /*==========================================*/ | 
| Stephen_NewVistas | 0:226550611f0d | 20 | |
| Stephen_NewVistas | 0:226550611f0d | 21 | void Fx( unsigned char * ); | 
| Stephen_NewVistas | 0:226550611f0d | 22 | |
| Stephen_NewVistas | 0:226550611f0d | 23 | |
| Stephen_NewVistas | 0:226550611f0d | 24 | /*=========================================== | 
| Stephen_NewVistas | 0:226550611f0d | 25 | * | 
| Stephen_NewVistas | 0:226550611f0d | 26 | * | 
| Stephen_NewVistas | 0:226550611f0d | 27 | */ | 
| Stephen_NewVistas | 0:226550611f0d | 28 | void receivedSerialData( void ){ | 
| Stephen_NewVistas | 0:226550611f0d | 29 | while( uart1_is_char() ){ | 
| Stephen_NewVistas | 0:226550611f0d | 30 | SerialHandler( uart1_get_char() ); | 
| Stephen_NewVistas | 0:226550611f0d | 31 | } | 
| Stephen_NewVistas | 0:226550611f0d | 32 | } | 
| Stephen_NewVistas | 0:226550611f0d | 33 | |
| Stephen_NewVistas | 0:226550611f0d | 34 | void bus_thread(void const *argument){ | 
| Stephen_NewVistas | 0:226550611f0d | 35 | while (true){ | 
| Stephen_NewVistas | 0:226550611f0d | 36 | receivedSerialData(); | 
| Stephen_NewVistas | 0:226550611f0d | 37 | wait_ms( 100 ); | 
| Stephen_NewVistas | 0:226550611f0d | 38 | } | 
| Stephen_NewVistas | 0:226550611f0d | 39 | } | 
| Stephen_NewVistas | 0:226550611f0d | 40 | |
| Stephen_NewVistas | 0:226550611f0d | 41 | void Test( void ); | 
| Stephen_NewVistas | 0:226550611f0d | 42 | /*==========================================*/ | 
| Stephen_NewVistas | 0:226550611f0d | 43 | |
| Stephen_NewVistas | 0:226550611f0d | 44 | int main() { | 
| Stephen_NewVistas | 0:226550611f0d | 45 | |
| Stephen_NewVistas | 0:226550611f0d | 46 | RegisterCommand( FX , &Fx ); | 
| Stephen_NewVistas | 0:226550611f0d | 47 | |
| Stephen_NewVistas | 0:226550611f0d | 48 | initComms(); | 
| Stephen_NewVistas | 0:226550611f0d | 49 | pc.printf( "\n\rStarted...\n\r" ); | 
| Stephen_NewVistas | 0:226550611f0d | 50 | init_uart1(); | 
| Stephen_NewVistas | 0:226550611f0d | 51 | |
| Stephen_NewVistas | 0:226550611f0d | 52 | Thread bus( bus_thread , NULL , osPriorityRealtime , DEFAULT_STACK_SIZE ); | 
| Stephen_NewVistas | 0:226550611f0d | 53 | |
| Stephen_NewVistas | 0:226550611f0d | 54 | while( true ){ }; | 
| Stephen_NewVistas | 0:226550611f0d | 55 | |
| Stephen_NewVistas | 0:226550611f0d | 56 | #ifdef TEST | 
| Stephen_NewVistas | 0:226550611f0d | 57 | Test(); | 
| Stephen_NewVistas | 0:226550611f0d | 58 | #endif // DEBUG | 
| Stephen_NewVistas | 0:226550611f0d | 59 | |
| Stephen_NewVistas | 0:226550611f0d | 60 | |
| Stephen_NewVistas | 0:226550611f0d | 61 | } | 
| Stephen_NewVistas | 0:226550611f0d | 62 | |
| Stephen_NewVistas | 0:226550611f0d | 63 | |
| Stephen_NewVistas | 0:226550611f0d | 64 | void Fx( unsigned char *_receivedData ){ | 
| Stephen_NewVistas | 0:226550611f0d | 65 | |
| Stephen_NewVistas | 0:226550611f0d | 66 | pc.printf( "In FX!\n\r" ); | 
| Stephen_NewVistas | 0:226550611f0d | 67 | |
| Stephen_NewVistas | 0:226550611f0d | 68 | Packet packet; | 
| Stephen_NewVistas | 0:226550611f0d | 69 | packet.sourceID = 0xF0; | 
| Stephen_NewVistas | 0:226550611f0d | 70 | packet.deviceID = 0xFE; | 
| Stephen_NewVistas | 0:226550611f0d | 71 | packet.command = 0x90; | 
| Stephen_NewVistas | 0:226550611f0d | 72 | packet.packetData[0] = 0x22; | 
| Stephen_NewVistas | 0:226550611f0d | 73 | packet.packetLength = 0x01; | 
| Stephen_NewVistas | 0:226550611f0d | 74 | |
| Stephen_NewVistas | 0:226550611f0d | 75 | SetResponse( &packet ); | 
| Stephen_NewVistas | 0:226550611f0d | 76 | } | 
| Stephen_NewVistas | 0:226550611f0d | 77 | |
| Stephen_NewVistas | 0:226550611f0d | 78 | int Bluetooth_SerialGetChar( unsigned char *_c ){ | 
| Stephen_NewVistas | 0:226550611f0d | 79 | if( bus.readable() ){ | 
| Stephen_NewVistas | 0:226550611f0d | 80 | char c = bus.getc(); | 
| Stephen_NewVistas | 0:226550611f0d | 81 | pc.printf( "%x" , c ); | 
| Stephen_NewVistas | 0:226550611f0d | 82 | _c = (unsigned char*)c; | 
| Stephen_NewVistas | 0:226550611f0d | 83 | return 1; | 
| Stephen_NewVistas | 0:226550611f0d | 84 | } | 
| Stephen_NewVistas | 0:226550611f0d | 85 | return 0; | 
| Stephen_NewVistas | 0:226550611f0d | 86 | } | 
| Stephen_NewVistas | 0:226550611f0d | 87 | |
| Stephen_NewVistas | 0:226550611f0d | 88 | int Bluetooth_ReceivePacket( Packet *_packet ){ | 
| Stephen_NewVistas | 0:226550611f0d | 89 | |
| Stephen_NewVistas | 1:d6b18299a715 | 90 | #ifdef DEBUG | 
| Stephen_NewVistas | 1:d6b18299a715 | 91 | PrintPacket( _packet ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 92 | #endif // DEBUG | 
| Stephen_NewVistas | 1:d6b18299a715 | 93 | |
| Stephen_NewVistas | 1:d6b18299a715 | 94 | switch ( _packet->command ){ | 
| Stephen_NewVistas | 1:d6b18299a715 | 95 | |
| Stephen_NewVistas | 1:d6b18299a715 | 96 | case 0x01: | 
| Stephen_NewVistas | 1:d6b18299a715 | 97 | CheckFunction( _packet ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 98 | break; | 
| Stephen_NewVistas | 0:226550611f0d | 99 | |
| Stephen_NewVistas | 1:d6b18299a715 | 100 | case 0x02: | 
| Stephen_NewVistas | 1:d6b18299a715 | 101 | |
| Stephen_NewVistas | 1:d6b18299a715 | 102 | break; | 
| Stephen_NewVistas | 1:d6b18299a715 | 103 | |
| Stephen_NewVistas | 1:d6b18299a715 | 104 | case 0x03: | 
| Stephen_NewVistas | 1:d6b18299a715 | 105 | |
| Stephen_NewVistas | 1:d6b18299a715 | 106 | break; | 
| Stephen_NewVistas | 1:d6b18299a715 | 107 | |
| Stephen_NewVistas | 1:d6b18299a715 | 108 | default: | 
| Stephen_NewVistas | 1:d6b18299a715 | 109 | break; | 
| Stephen_NewVistas | 1:d6b18299a715 | 110 | |
| Stephen_NewVistas | 1:d6b18299a715 | 111 | } | 
| Stephen_NewVistas | 0:226550611f0d | 112 | |
| Stephen_NewVistas | 0:226550611f0d | 113 | |
| Stephen_NewVistas | 0:226550611f0d | 114 | return 0; | 
| Stephen_NewVistas | 0:226550611f0d | 115 | } | 
| Stephen_NewVistas | 0:226550611f0d | 116 | |
| Stephen_NewVistas | 0:226550611f0d | 117 | int Bluetooth_SendChar( unsigned char _c ){ | 
| Stephen_NewVistas | 0:226550611f0d | 118 | bus.putc( _c ); | 
| Stephen_NewVistas | 0:226550611f0d | 119 | return 0; | 
| Stephen_NewVistas | 0:226550611f0d | 120 | } | 
| Stephen_NewVistas | 0:226550611f0d | 121 | |
| Stephen_NewVistas | 1:d6b18299a715 | 122 | void PrintPacket( Packet *_packet ){ | 
| Stephen_NewVistas | 1:d6b18299a715 | 123 | pc.printf( "Process Packet\n\r" ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 124 | |
| Stephen_NewVistas | 1:d6b18299a715 | 125 | pc.printf( "\t%x - Device ID\n\r" , _packet->deviceID ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 126 | pc.printf( "\t%x - Source ID\n\r" , _packet->sourceID ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 127 | pc.printf( "\t%x - Command\n\r" , _packet->command ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 128 | pc.printf( "\t%x - Length\n\r" , _packet->packetLength ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 129 | unsigned char *ptr = (unsigned char *)&_packet->packetData; | 
| Stephen_NewVistas | 1:d6b18299a715 | 130 | for( int i = 0 ; i < _packet->packetLength ; i++ ){ | 
| Stephen_NewVistas | 1:d6b18299a715 | 131 | pc.printf( "\t%x - Data[%d]\n\r" , *ptr++ , i ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 132 | } | 
| Stephen_NewVistas | 1:d6b18299a715 | 133 | } | 
| Stephen_NewVistas | 1:d6b18299a715 | 134 | |
| Stephen_NewVistas | 0:226550611f0d | 135 | void Test( void ){ | 
| Stephen_NewVistas | 0:226550611f0d | 136 | |
| Stephen_NewVistas | 0:226550611f0d | 137 | Packet commandPacket; | 
| Stephen_NewVistas | 0:226550611f0d | 138 | commandPacket.sourceID = 0xFE; | 
| Stephen_NewVistas | 0:226550611f0d | 139 | commandPacket.deviceID = 0xF0; | 
| Stephen_NewVistas | 0:226550611f0d | 140 | commandPacket.command = 0x10; | 
| Stephen_NewVistas | 0:226550611f0d | 141 | commandPacket.packetLength = 0x04; | 
| Stephen_NewVistas | 0:226550611f0d | 142 | commandPacket.packetData[0] = 0x8E; | 
| Stephen_NewVistas | 0:226550611f0d | 143 | commandPacket.packetData[1] = 0x7F; | 
| Stephen_NewVistas | 0:226550611f0d | 144 | commandPacket.packetData[2] = 0x8F; | 
| Stephen_NewVistas | 0:226550611f0d | 145 | commandPacket.packetData[3] = 0xB0; | 
| Stephen_NewVistas | 0:226550611f0d | 146 | |
| Stephen_NewVistas | 0:226550611f0d | 147 | unsigned char buf1[1024]; | 
| Stephen_NewVistas | 0:226550611f0d | 148 | unsigned char buf2[1024]; | 
| Stephen_NewVistas | 0:226550611f0d | 149 | unsigned char *ptr = buf1; | 
| Stephen_NewVistas | 0:226550611f0d | 150 | |
| Stephen_NewVistas | 0:226550611f0d | 151 | // buf for commandPacket | 
| Stephen_NewVistas | 0:226550611f0d | 152 | int size1 = getFormattedPacket( &commandPacket , buf1 ); | 
| Stephen_NewVistas | 0:226550611f0d | 153 | int size2; | 
| Stephen_NewVistas | 0:226550611f0d | 154 | |
| Stephen_NewVistas | 0:226550611f0d | 155 | // buf for POLL | 
| Stephen_NewVistas | 0:226550611f0d | 156 | buf1[0] = 0x8F; | 
| Stephen_NewVistas | 0:226550611f0d | 157 | buf1[1] = 0xF0; | 
| Stephen_NewVistas | 0:226550611f0d | 158 | size1 = 2; | 
| Stephen_NewVistas | 0:226550611f0d | 159 | |
| Stephen_NewVistas | 0:226550611f0d | 160 | buf2[0] = 0x8D; | 
| Stephen_NewVistas | 0:226550611f0d | 161 | size2 = 1; | 
| Stephen_NewVistas | 0:226550611f0d | 162 | |
| Stephen_NewVistas | 0:226550611f0d | 163 | pc.printf( "size: %i\t" , size1 ); | 
| Stephen_NewVistas | 0:226550611f0d | 164 | |
| Stephen_NewVistas | 0:226550611f0d | 165 | pc.printf( "buf: " ); | 
| Stephen_NewVistas | 0:226550611f0d | 166 | for( int i = 0 ; i < size1 ; i++ ){ | 
| Stephen_NewVistas | 0:226550611f0d | 167 | pc.printf( "%x " , *(ptr++) ); | 
| Stephen_NewVistas | 0:226550611f0d | 168 | } | 
| Stephen_NewVistas | 0:226550611f0d | 169 | pc.printf( " \n\r" ); | 
| Stephen_NewVistas | 0:226550611f0d | 170 | |
| Stephen_NewVistas | 0:226550611f0d | 171 | while(1) { | 
| Stephen_NewVistas | 0:226550611f0d | 172 | // poll with no message | 
| Stephen_NewVistas | 0:226550611f0d | 173 | ptr = buf1; | 
| Stephen_NewVistas | 0:226550611f0d | 174 | for( int i = 0 ; i < size1 ; i++ ){ | 
| Stephen_NewVistas | 0:226550611f0d | 175 | SerialHandler( *(ptr++) ); | 
| Stephen_NewVistas | 0:226550611f0d | 176 | wait( 1 ); | 
| Stephen_NewVistas | 0:226550611f0d | 177 | } | 
| Stephen_NewVistas | 0:226550611f0d | 178 | |
| Stephen_NewVistas | 0:226550611f0d | 179 | // create message | 
| Stephen_NewVistas | 1:d6b18299a715 | 180 | Bluetooth_SendChar( 0xF0 ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 181 | Bluetooth_SendChar( 0x01 ); | 
| Stephen_NewVistas | 1:d6b18299a715 | 182 | Bluetooth_SendChar( 0x10 ); | 
| Stephen_NewVistas | 0:226550611f0d | 183 | |
| Stephen_NewVistas | 0:226550611f0d | 184 | // poll with message | 
| Stephen_NewVistas | 0:226550611f0d | 185 | ptr = buf1; | 
| Stephen_NewVistas | 0:226550611f0d | 186 | for( int i = 0 ; i < size1 ; i++ ){ | 
| Stephen_NewVistas | 0:226550611f0d | 187 | SerialHandler( *(ptr++) ); | 
| Stephen_NewVistas | 0:226550611f0d | 188 | wait( 1 ); | 
| Stephen_NewVistas | 0:226550611f0d | 189 | } | 
| Stephen_NewVistas | 0:226550611f0d | 190 | |
| Stephen_NewVistas | 0:226550611f0d | 191 | // send ACK | 
| Stephen_NewVistas | 0:226550611f0d | 192 | ptr = buf2; | 
| Stephen_NewVistas | 0:226550611f0d | 193 | for( int i = 0 ; i < size2 ; i++ ){ | 
| Stephen_NewVistas | 0:226550611f0d | 194 | SerialHandler( *(ptr++) ); | 
| Stephen_NewVistas | 0:226550611f0d | 195 | wait( 1 ); | 
| Stephen_NewVistas | 0:226550611f0d | 196 | } | 
| Stephen_NewVistas | 0:226550611f0d | 197 | } | 
| Stephen_NewVistas | 0:226550611f0d | 198 | } |