For Hepta-Sat Lite
Diff: HeptaXbee.cpp
- Revision:
- 0:1e02be589d1f
- Child:
- 1:c31e4a5db17c
diff -r 000000000000 -r 1e02be589d1f HeptaXbee.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HeptaXbee.cpp Wed Jul 19 07:59:59 2017 +0000 @@ -0,0 +1,112 @@ +#include "HeptaXbee.h" +#include "mbed.h" +#include <stdarg.h> + +HeptaXbee::HeptaXbee(PinName tx, PinName rx) : xbee(tx,rx) +{ + rcmd = 0; + cmdflag = 0; +} + +void HeptaXbee::xbee_recieve(int *xrcmd, int *xcmdflag) { + xbee.attach(this,&HeptaXbee::commandget,Serial::RxIrq); + //xbee.printf("ssXbeedata= %d,%d",HeptaXbee::rcmd,HeptaXbee::cmdflag); + *xrcmd = HeptaXbee::rcmd; + *xcmdflag = HeptaXbee::cmdflag; +} + +void HeptaXbee::initialize(){ + HeptaXbee::rcmd = 0; + HeptaXbee::cmdflag = 0; +} + +void HeptaXbee::commandget(){ + HeptaXbee::rcmd=xbee.getc(); + HeptaXbee::cmdflag = 1; + //xbee.printf("Xbeedata= %d,%d",rcmd,cmdflag); +} + +void HeptaXbee::xbee_transmit(char* output_data,size_t output_n, + char data1[],char data2[],char data3[],char data4[],char data5[],char data6[],char data7[],char data8[],char data9[], + int n1,int n2,int n3,int n4,int n5,int n6,int n7,int n8,int n9,int data_num) +{ + int N=0,i=0,ii,jj=0; + if(data_num>=1){ + for(i = 0; i <= n1-1; i++){ + output_data[N+i] = data1[i]; + } + N=i; + } + + if(data_num>=2){ + for(i = 0; i <= n2-1; i++){ + output_data[N+i] = data2[i]; + } + N=N+i; + } + if(data_num>=3){ + for(i = 0; i <= n3-1; i++){ + output_data[N+i] = data3[i]; + } + N=N+i; + } + if(data_num>=4){ + for(i = 0; i <= n4-1; i++){ + output_data[N+i] = data4[i]; + } + N=N+i; + } + if(data_num>=5){ + for(i = 0; i <= n5-1; i++){ + output_data[N+i] = data5[i]; + } + N=N+i; + } + if(data_num>=6){ + for(i = 0; i <= n6-1; i++){ + output_data[N+i] = data6[i]; + } + N=N+i; + } + if(data_num>=7){ + for(i = 0; i <= n7-1; i++){ + output_data[N+i] = data7[i]; + } + N=N+i; + } + if(data_num>=8){ + for(i = 0; i <= n8-1; i++){ + output_data[N+i] = data8[i]; + } + N=N+i; + } + if(data_num>=9){ + for(i = 0; i <= n9-1; i++){ + output_data[N+i] = data9[i]; + } + } + for(ii=0;ii<output_n;ii++){ + xbee.putc(output_data[ii]); + jj++; + if(jj==2) + { + xbee.putc(0x20); + jj=0; + } + } + xbee.putc(0x0a); +} +void HeptaXbee::puts( char *s ) { + while ( char c = *s++ ) + xbee.putc( c ); +} +void HeptaXbee::printf( char *format, ... ) { + char s[ 32 ]; + va_list args; + + va_start( args, format ); + vsnprintf( s, 32, format, args ); + va_end( args ); + + xbee.puts( s ); +} \ No newline at end of file