Stephen Davis / Mbed 2 deprecated BT_Hub

Dependencies:   mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }