テストモード追加、LED有効化 left -> SerialRX, Data Recieve Complete , Serial Tx , Light Tx

Dependencies:   XBee mbed NetServicesMin

Revision:
1:36eb173eb52b
Parent:
0:42adca80439c
Child:
2:dec6319cf02c
--- a/frame_layer/layer_frame.cpp	Thu Mar 22 12:40:48 2012 +0000
+++ b/frame_layer/layer_frame.cpp	Sun Apr 15 13:09:53 2012 +0000
@@ -3,7 +3,7 @@
 #include "config.h"
 #include "culc_crc16.h"
 #include "layer_frame.h"
-
+#include "data_models.h"
 #include "leds.h"
 #include "serialRecieve.h"
 
@@ -26,12 +26,30 @@
 volatile float txMin;
 volatile float txMid;
 
-//Ticker carrierWave;
+
 AnalogOut dac(p18);
+DigitalOut lightPowerOn(p8);
+DigitalOut out(p19);
 
-void setTxLevel(uint8_t _gain , uint8_t _mid)
+extern PrefSender spref;
+
+
+void lightIlluminateChange(uint8_t _sw){
+    
+    if(_sw == 0){
+        lightPowerOn=0; 
+    }
+    else{
+        lightPowerOn=1;      
+    }
+
+}
+
+void setTxLevel(TxGainData *_data)
 {
     
+    uint8_t _gain = _data->gain;
+    uint8_t _mid = _data->middleLevel;
     
     if( (_mid  > 10) || (_mid <1) ) return;
     if(_gain > 10) return;
@@ -81,7 +99,7 @@
 void preambleGenerator(){
 
     symbolCode = 4;   
-    while( pulseCounter <=77 )  {readProcess();}
+    while( pulseCounter <=96 )  {readProcess();}
     pulseCounter = 0;
 }
 
@@ -116,8 +134,8 @@
     else                    pulseState = -1;
 
     
-    if(pulseState<0)    dac = txMax;
-    else                dac = txMin;
+    if(pulseState<0)    {  out = 1; dac = txMax; }
+    else                {  out = 0; dac = txMin; }
 
 }
 extern "C" void TIMER1_IRQHandler (void)
@@ -134,35 +152,36 @@
     case 0:
     {
         if( pulseCounter <= 6)  pulseGenerator();
-        else                    dac=txMid;
+        else                    { out = 0; dac=txMid;}
     }
     break;
     
     case 2:
     {
         if( (pulseCounter > 6)&(pulseCounter <= 12) )  pulseGenerator();
-        else                                            dac=txMid;
+        else                                           { out = 0; dac=txMid;}
     }
     break;
     
     case 1:
     {
         if( (pulseCounter > 12)&(pulseCounter <= 18) )  pulseGenerator();
-        else                    dac=txMid;
+        else                    { out = 0; dac=txMid;}
     }
     break;
     
     case 3:
     {
         if( (pulseCounter > 18)&(pulseCounter <= 24 ))  pulseGenerator();
-        else                    dac=txMid;
+        else                    { out = 0; dac=txMid;}
     }
     break;
     
     case 4:
     {
-        if( pulseCounter <= 18) pulseGenerator();
-        else                    dac=txMid;
+   //     if(  pulseCounter <= 18 ) pulseGenerator();
+         if(  (pulseCounter > 18) & (pulseCounter <= 36) ) pulseGenerator();
+        else                    { out = 0; dac=txMid;}
     }
     break;
 
@@ -171,58 +190,91 @@
     
 }
 
-
- void initCarrierWave(){
+void initCarrierWave(){
     dac = kDAC_OFF;
+    out=0;
 
     pulseCounter=0;
     symbolCode = 0;
     pulseState = -1;
     
-    setTxLevel( kTxGain , kTxMidLevel );
+    spref.gainData.gain = kTxGain;
+    spref.gainData.middleLevel = kTxMidLevel;
+
+    setTxLevel( &spref.gainData );
     
-    isSend=false;
-    isSendContinueous=false;
+    spref.lightsw=1;
+    lightIlluminateChange(spref.lightsw);
+    
+     spref.isSend=0;
+    spref.continueusMode=0;
+    
+ 
     sendedFrameNumber=0xffff;
     timer1_init();
    
-   initPayload(&sendedPayload);
+ //  initPayload(&sendedPayload);
 }
 
 
+
 void sendPayload(Payload *_payload){
 
-    if(isSend) return;
+    #ifdef _SERVER_TEST_MODE_
+    dumpPayload(_payload);
+    #endif
     
-    Frame *frame=&_payload->frame;
+    makedata(_payload);
+    
+    ledLightTx();
     
-    if( frame->message.frameNumber != sendedFrameNumber ){
+    for(uint8_t i=0 ; i < kContSendNum ; i++){
+     sendbuff();
+    }
+
+}
+
+void makedata(Payload *_payload ){
+
+    uint16_t fNum= _payload->frame.message.frameNumber;
     
-        sendedFrameNumber = frame->message.frameNumber;
+//    printf("\n------------------- fnum:%0X\n",fNum);
+    if( fNum != sendedFrameNumber ){
+    
+        sendedFrameNumber = fNum;
         
         memcpy(&sendedPayload,_payload,sizeof(Payload));
+        sendedPayload.frame.message.sum = culcSum(&sendedPayload);
+        
+        Payload tmp;
+         memcpy(&tmp,&sendedPayload,sizeof(Payload));
+        
+        Frame *frame=&tmp.frame;
+        
+        payloadToNetwork(&tmp);
+//        dumpPayload(&tmp);
          
         uint16_t crc = 0xffff;   
         uint8_t index=0;
     
         //frame type
-        buff[index]=_payload->ftype;
+        buff[index]=tmp.ftype;
         crc = One_Byte_CRC16_Calc( crc , buff[index]);
     
         index++;
-        uint8_t *tmp=(uint8_t*)&frame->id;
+        uint8_t *data=(uint8_t*)&frame->id;
         
         //id
         for(int8_t i=15 ; i>=0 ;i--){
-            buff[index]=tmp[i];
+            buff[index]=data[i];
             crc = One_Byte_CRC16_Calc( crc , buff[index]);
             index++;
         }
-        
+
         //message
-        tmp=(uint8_t*)&frame->message;
+        data=(uint8_t*)&frame->message;
         for(int8_t i=47 ; i>=0 ;i--){
-            buff[index]=tmp[i];
+            buff[index]=data[i];
             crc = One_Byte_CRC16_Calc( crc , buff[index]);
             index++;
         }
@@ -233,30 +285,20 @@
         buff[index] =(uint8_t)(crc>>8);
       
         }
-//    for(int i=0;i<67;i++) printf("%02X ",buff[i]);
-//    printf("\r\n");
-    ledDevice();
-   
-    for(uint8_t i=0 ; i<kContSendNum ; i++) 
-    {
-        preambleGenerator();
         
-        for(uint16_t i=0 ; i<67 ; i++) sendByteData( buff[i] );
-//        printf("\r\n+++++++++\r\n");
-    }
-    
-    isSend=false;
-
 }
 
 
-void swapPayloadData(Payload *_payload)
-{
-     uint8_t *org=(uint8_t*)_payload;
-     uint8_t *tmp=(uint8_t*)&sendedPayload;
-
-     uint8_t i;
-     for(i=0 ; i<16 ;i++) tmp[i+2]=org[17-i];
-     for(i=0 ; i<48 ;i++) tmp[i+18]=org[65-i];
+void sendComp(void){
+    isSend=false;
 }
 
+void sendbuff(void){
+    if(isSend) return;
+//    ledDevice();
+    
+    isSend=true;
+    preambleGenerator();    
+    for(uint16_t i=0 ; i<67 ; i++) sendByteData( buff[i] );
+    isSend=false;
+}