nakagawa kit emurator (add CR) BaudRate 115200,p20
Dependencies: mbed NetServicesMin
Revision 3:51e64f5e42b8, committed 2012-04-17
- Comitter:
- recotana
- Date:
- Tue Apr 17 03:38:00 2012 +0000
- Parent:
- 2:c3f3d783560d
- Child:
- 4:9daa308155d6
- Commit message:
Changed in this revision
--- a/common/data_models.cpp Thu Mar 22 15:15:10 2012 +0000 +++ b/common/data_models.cpp Tue Apr 17 03:38:00 2012 +0000 @@ -2,6 +2,8 @@ #include "data_models.h" #include "EthernetNetIf.h" +extern Serial pc; + void initPayload(Payload *_payload) { @@ -13,9 +15,9 @@ for(int i=0 ; i < sizeof(frame->id.personalId) ; i++) frame->id.personalId[i]=0; - frame->message.frameNumber=0x0001; - frame->message.device=LED_RECIEVER; - frame->message.command=RECIEVE; + frame->message.frameNumber=0xFFFF; + frame->message.device=SERVER; + frame->message.command=PING; for(int i=0 ; i < sizeof(_payload->frame.message.data) ; i++) _payload->frame.message.data[i]=0; } @@ -23,21 +25,77 @@ void payloadToNetwork(Payload *_payload) { Frame *frame=&_payload->frame; - _payload->size = htons(_payload->size); - frame->id.head = htons(frame->id.head); + _payload->size = htons(_payload->size); +// frame->id.head = htons(frame->id.head); frame->message.totalSize = htons(frame->message.totalSize); frame->message.frameNumber = htons(frame->message.frameNumber); + frame->message.sum = htons(frame->message.sum); + if(frame->message.command == PING) { + + if(frame->message.device == SERVER) + { + + PrefServer *data; + data = (PrefServer*)frame->message.data; + data->serverPort = htons(data->serverPort); + data->destinationPort = htons(data->destinationPort); + data->xbeeAdress = htonl(data->xbeeAdress); + + } + else if(frame->message.device == LED_SENDER) + { + PrefSender *data; + data = (PrefSender*)frame->message.data; + data->xbeeAdress = htonl(data->xbeeAdress); + data->currentFrameNumber = htons(data->currentFrameNumber); + } + else if(frame->message.device == LED_RECIEVER) + { + PrefReciever *data; + data = (PrefReciever*)frame->message.data; + data->xbeeAdress = htonl(data->xbeeAdress); + } + } + } void networkToPayload(Payload *_payload) { Frame *frame=&_payload->frame; - _payload->size = ntohs(_payload->size); - frame->id.head = ntohs(frame->id.head); + _payload->size = ntohs(_payload->size); +// frame->id.head = ntohs(frame->id.head); frame->message.totalSize = ntohs(frame->message.totalSize); frame->message.frameNumber = ntohs(frame->message.frameNumber); + frame->message.sum = ntohs(frame->message.sum); + + if(frame->message.command == PING){ + + if(frame->message.device == SERVER) + { + PrefServer *data; + data = (PrefServer*)frame->message.data; + data->serverPort = ntohs(data->serverPort); + data->destinationPort = ntohs(data->destinationPort); + data->xbeeAdress = ntohl(data->xbeeAdress); + } + else if(frame->message.device == LED_SENDER) + { + PrefSender *data; + data = (PrefSender*)frame->message.data; + data->xbeeAdress = ntohl(data->xbeeAdress); + data->currentFrameNumber = ntohs(data->currentFrameNumber); + } + else if(frame->message.device == LED_RECIEVER) + { + PrefReciever *data; + data = (PrefReciever*)frame->message.data; + data->xbeeAdress = ntohl(data->xbeeAdress); + } + } } + + void initTestPayloadData(Payload *_payload) { Frame *frame=&_payload->frame; @@ -45,21 +103,21 @@ initPayload(_payload); _payload->size=sizeof(Payload); - frame->id.head=0x0000; - uint8_t tmpid[14]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44}; +// frame->id.head=0x0000; +// uint8_t tmpid[14]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44}; + uint8_t tmpid[16]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46}; for(int i=0;i<sizeof(tmpid);i++) frame->id.personalId[i]=tmpid[i]; frame->message.frameNumber=1; - frame->message.device=LED_SENDER; + frame->message.device=SERVER; frame->message.command=SEND_SINGLE; - uint8_t tmpdata[42]={ + uint8_t tmpdata[40]={ 1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42}; + 31,32,33,34,35,36,37,38,39,40}; for(int i=0;i<sizeof(tmpdata);i++) frame->message.data[i]=tmpdata[i]; frame->message.totalSize= @@ -68,39 +126,86 @@ +sizeof(frame->message.device) +sizeof(frame->message.command) +sizeof(frame->message.data); + + uint16_t sum = culcSum(_payload); + + frame->message.sum = sum; } +uint16_t culcSum(Payload *_payload){ + + uint16_t tmpSum = _payload->ftype; + uint8_t *data = (uint8_t *)&_payload->frame; + + for(uint8_t i=0 ; i<sizeof(Frame)-2 ; i++){ + tmpSum += data[i]; + } + return tmpSum; +} void dumpPayload(Payload *_payload) { Frame *frame=&_payload->frame; - printf("\r\n======== dump!!\r\n"); - printf("payload\nsize:%04X\r\n ",_payload->size); - printf("Type:%0X\r\n ",_payload->ftype); + pc.printf("\r\n======== dump!!\r\n"); + pc.printf("payload\nsize:%04X\r\n ",_payload->size); + pc.printf("Type:%0X\r\n ",_payload->ftype); - printf("Payload id_head:%04X\r\n personal id:",_payload->frame.id.head); +// pc.printf("Payload id_head:%04X\r\n personal id:",_payload->frame.id.head); + pc.printf("personal id:"); for(int i=0 ; i < sizeof(frame->id.personalId) ; i++){ - printf("%d:%02X ",i,frame->id.personalId[i]); + pc.printf("%02X:%c ",frame->id.personalId[i],frame->id.personalId[i]); } - printf("\r\n"); + pc.printf("\r\n"); - printf("total size:%d , frame number:%d , divece:%0X , command:%02X\r\n" + pc.printf("total size:%d , frame number:%d , divece:%0X , command:%02X , sum:%04X\r\n" ,frame->message.totalSize ,frame->message.frameNumber ,frame->message.device - ,frame->message.command); + ,frame->message.command + ,frame->message.sum); - printf("message data:\r\n"); + pc.printf("message data:\r\n"); for(int i=0 ; i < sizeof(frame->message.data) ; i++){ - printf("%d:%02X ",i,_payload->frame.message.data[i]); + pc.printf("%d:%02X ",i,_payload->frame.message.data[i]); } - printf("\r\n--- RAW DATA -------\r\n"); + pc.printf("\r\n--- RAW DATA -------\r\n"); for(int i=0 ; i < sizeof(Payload) ; i++){ - printf("%d:%02X ",i,((uint8_t*)_payload)[i]); + pc.printf("%d:%02X ",i,((uint8_t*)_payload)[i]); } - printf("\r\n"); + pc.printf("\r\n"); +} + +void dumpPrefSender(PrefSender *prf) +{ + pc.printf("current frame number:%d\n",prf->currentFrameNumber); + pc.printf("gainData gain:%d\n",prf->gainData.gain); + pc.printf("gainData middleLevel:%d\n",prf->gainData.middleLevel); + pc.printf("lightsw:%d\n",prf->lightsw); + pc.printf("continueusMode:%d\n",prf->continueusMode); + pc.printf("isSend:%d\n",prf->isSend); + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + +} +void dumpPrefReciever(PrefReciever *prf) +{ + + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + +} +void dumpPrefServer(PrefServer *prf) +{ + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + pc.printf("server ip:%d.%d.%d.%d\n",prf->serverAddress[0],prf->serverAddress[1],prf->serverAddress[2],prf->serverAddress[3]); + pc.printf("subnet ip:%d.%d.%d.%d\n",prf->subnetMask[0],prf->subnetMask[1],prf->subnetMask[2],prf->subnetMask[3]); + pc.printf("router ip:%d.%d.%d.%d\n",prf->routerAddress[0],prf->routerAddress[1],prf->routerAddress[2],prf->routerAddress[3]); + + pc.printf("Server Port:%d\n",prf->serverPort); + + pc.printf("Destination ip:%d.%d.%d.%d\n",prf->destinationAddress[0],prf->destinationAddress[1],prf->destinationAddress[2],prf->destinationAddress[3]); + pc.printf("Destination Port:%d\n",prf->destinationPort); + } \ No newline at end of file
--- a/common/data_models.h Thu Mar 22 15:15:10 2012 +0000 +++ b/common/data_models.h Tue Apr 17 03:38:00 2012 +0000 @@ -23,26 +23,27 @@ SEND_SINGLE, SEND_CONTINUEOUS, SEND_CONT_STOP, - SET_TX_GAIN + SET_TX_GAIN, + SET_LIGHT_CONTROL } Command; - // //for TCP/IP data structure // //message data 48byte(size fix) typedef struct{ - uint16_t totalSize; //2(total size) + 2(frame number) + 1(device) + 1(command) + 42(data:max 42) <--- max 48 + uint16_t totalSize; //2(total size) + 2(frame number) + 1(device) + 1(command) + 40(data:max 40) <--- max 46 uint16_t frameNumber; Device device; Command command; - uint8_t data[42]; //0 fill,size fix + uint8_t data[40]; //0 fill,size fix + uint16_t sum; } Message; //payload id 16byte typedef struct{ - uint16_t head; //reserve 0x0000 - uint8_t personalId[14]; +// uint16_t head; //reserve 0x0000 + uint8_t personalId[16]; } ID; typedef struct{ @@ -59,13 +60,57 @@ } Payload; + + +/* --------------------------------------------------- + message data structure +---------------------------------------------------*/ + +/* light�@illuminate level */ +typedef struct{ + uint8_t gain; //1~10 + uint8_t middleLevel; //1~10 +} TxGainData; + +typedef struct{ + uint16_t currentFrameNumber; + TxGainData gainData; + uint8_t lightsw; //0:light off 1:light on + uint8_t continueusMode; //0:single 1:continueus + uint8_t isSend; + uint8_t dummy; + uint32_t xbeeAdress; +} PrefSender; + +typedef struct{ + uint32_t xbeeAdress; +} PrefReciever; + +typedef struct{ + uint32_t xbeeAdress; + + uint8_t serverAddress[4]; + uint8_t subnetMask[4]; + uint8_t routerAddress[4]; + uint16_t serverPort; + + uint8_t destinationAddress[4]; + uint16_t destinationPort; +} PrefServer; + + + void initPayload(Payload *_payload); void payloadToNetwork(Payload *_payload); void networkToPayload(Payload *_payload); void initTestPayloadData(Payload *_payload); +uint16_t culcSum(Payload *_payload); void dumpPayload(Payload *_payload); +void dumpPrefSender(PrefSender *prf); +void dumpPrefReciever(PrefReciever *prf); +void dumpPrefServer(PrefServer *prf); #endif \ No newline at end of file
--- a/main.cpp Thu Mar 22 15:15:10 2012 +0000 +++ b/main.cpp Tue Apr 17 03:38:00 2012 +0000 @@ -2,13 +2,13 @@ #include "data_models.h" -Serial serial(USBTX, USBRX); +Serial pc(USBTX, USBRX); DigitalIn din(p20); void serialInit(void){ - serial.baud(115200); - serial.format(8, Serial::None, 1); + pc.baud(115200); + pc.format(8, Serial::None, 1); } @@ -16,10 +16,10 @@ uint8_t *d=(uint8_t *)&data->ftype; - for(uint8_t i=0 ; i<65 ; i++){ + for(uint8_t i=0 ; i<67 ; i++){ - if(d[i]==0x0A) serial.putc(0x0D); //add CR LF - serial.putc(d[i]); + if(d[i]==0x0A) pc.putc(0x0D); //add CR LF + pc.putc(d[i]); } } @@ -36,9 +36,9 @@ payloadToNetwork(&payload); while(1) { - if(!din){ + // if(!din){ sendPayload(&payload); wait(0.2); - } +// } } }