arm studio build

Dependencies:   libxDot-mbed5

Files at this revision

API Documentation at this revision

Comitter:
alan1974
Date:
Wed Aug 15 13:51:13 2018 +0000
Parent:
9:cc23b2049639
Child:
11:77fe4f18a81b
Commit message:
all new features working

Changed in this revision

inc/global.h Show annotated file Show diff for this revision Revisions of this file
inc/history.h Show annotated file Show diff for this revision Revisions of this file
src/main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/inc/global.h	Mon Aug 13 15:58:00 2018 +0000
+++ b/inc/global.h	Wed Aug 15 13:51:13 2018 +0000
@@ -11,6 +11,8 @@
   uint8_t   maxTxPowerdBm;              //max power              (read only) 
   uint8_t   minTxPowerdBm;              //min power              (read only)
   uint8_t   dataRateCurrent;            //dataRateCurrentlyUsed  (read only)
+  uint8_t   txPowerCurrent;             //tx power CurrentlyUsed (read only)
+  uint8_t   rx1DelayCurrent;            //rx1 delay,sec          (read only)  
   uint8_t   public_network;             //public = true, private = false;
   uint8_t   join_delay;                 //join delay (sec)
   uint8_t   sub_band;                   //network subband #  
@@ -19,8 +21,9 @@
   bool      txInverted;                 //true if tx inverted
   bool      rxInverted;                 //true if rx inverted
   uint8_t   rxDelay;                    //set rx window delay,sec
-  uint8_t   txPowerdBm;                 //transmit power
+  uint8_t   txPower;                    //transmit power
   uint8_t   dataRate;                   //data rate     
+  
 }xdot_radio_params; 
 
 //struc to set nvm params
--- a/inc/history.h	Mon Aug 13 15:58:00 2018 +0000
+++ b/inc/history.h	Wed Aug 15 13:51:13 2018 +0000
@@ -1,6 +1,6 @@
 #ifdef COMMENTS_ONLY
 Data:       Rev:    API:    Comments:
-26July2018 0007    003      - added new 
+26July2018 0007    003      - added new radio commands.
                             - removed update_network_link_check_config(3, 5), replaced with setLinkCheckCount();
                             - added link check count parameter to radio configuration proc cmd.
                             -added new command to write/read network session to flash
--- a/src/main.cpp	Mon Aug 13 15:58:00 2018 +0000
+++ b/src/main.cpp	Wed Aug 15 13:51:13 2018 +0000
@@ -13,7 +13,7 @@
 
 bool verbose =  true;
 //=======================================================================================================
-// enable some GPIO for scope trigger or led 
+// enable GPIO for scope trigger
 //=======================================================================================================
 //#define GPIO_ENABLE
 //=======================================================================================================
@@ -56,17 +56,11 @@
 #endif
 
 bool adr = false;    //set adaptive data rate
-//------------------------------------------------------------------------------------------------------
-//wait_after_sleep_usec  ---------------- NO !!!!!!!!!!!!!!!
-// -when xdot terminal display is disabled we need to add a delay between exiting sleep and polling for
-//  incoming i2c data from proc
-//  values of    300-5000 usec works
-// - not sure why this is needed, it may take additional time for the uP to power up i2c io?
-int16_t wait_after_sleep_usec =2500;   
-//------------------------------------------------------------------------------------------------------
-
-
-
+//=======================================================================================================
+// -need to add a delay between exiting i2c read->proc and before putting xdot to sleep to allow for final
+//  xfr of bytes in i2c buffer to be xfrd to proc. If log output enabled then it causes enough delay when
+//  it prints status info to make the delay ok. For now add this delay when both log enabled and disabled.
+int16_t wait_before_sleep_usec =  10000;  
 //=======================================================================================================
 // deepsleep consumes slightly less current than sleep
 // in sleep mode, IO state is maintained, RAM is retained, and application will resume after waking up
@@ -90,32 +84,11 @@
 std::vector<uint8_t> upstream_packet; 
 
 #ifdef GPIO_ENABLE
-DigitalOut led1(PB_0); //LED1);
 DigitalInOut gpio1(PA_5);  //scope debug PA-5 is connected to SW1 pads on Loren v04 and can be used for scope debug
 #endif
 
 Serial pc(USBTX, USBRX);   //serial port output
 
-//=================================================================================================
-//LED_test
-//=================================================================================================
-void LED_test(int num)
-{
-    #ifdef GPIO_ENABLE
-    if (led_enabled)
-    {
-        if(verbose)pc.printf("LED_test()\r\n");
-        int test;
-        for (test=0; test<num; test++)
-        {
-            led1 = 0; 
-            wait_ms(500);
-            led1 = 1;
-            wait_ms(500);           
-        }
-    }
-    #endif        
-}
 //==================================================================================
 //chksum
 //compute checksum over i2c buffer except for last byte (chksum byte)
@@ -208,7 +181,6 @@
 #ifdef GPIO_ENABLE   
     gpio1.output();    
     gpio1 =0;         
-    led1 = 1;
 #endif    
 
     pc.baud(115200); 
@@ -226,9 +198,8 @@
 
     if (pNvmData->bLogOutputOn == 0){
         pc.printf("\r\nDISABLING TERMINAL OUTPUT\r\n");
-        //dot->setLogLevel(mts::MTSLog::NONE_LEVEL);         //doesn't work
-        //dot->setLogLevel((true) ? mts::MTSLog::WARNING_LEVEL : mts::MTSLog::WARNING_LEVEL); //!!!!!!!!!!!! deosn't work
-        dot->setLogLevel((true) ? mts::MTSLog::INFO_LEVEL : mts::MTSLog::INFO_LEVEL); //!!!!!!!!!!!! this works
+        dot->setLogLevel(mts::MTSLog::NONE_LEVEL);         //doesn't work
+        //dot->setLogLevel((true) ? mts::MTSLog::INFO_LEVEL : mts::MTSLog::INFO_LEVEL); //!!!!!!!!!!!! this works
         //dot->setLogLevel((true) ? mts::MTSLog::TRACE_LEVEL : mts::MTSLog::TRACE_LEVEL); //!!!!!!!!!!!! this works
         verbose = false;
     }             
@@ -274,9 +245,10 @@
    
    i2c_proc_init();  //init i2c comm  
    sleep_wake_interrupt_only(deep_sleep); //wake on rising edge of wake signal from proc
-  // wait_us(wait_after_sleep_usec);
 //scope test    
-//    gpio1 =1;
+#ifdef GPIO_ENABLE 
+        gpio1 =1;
+#endif
 //==============================================================================
 //  -loop here forever
 //       -sleep until LORA_WAKE goes hi => proc ready to send i2c cmd
@@ -295,10 +267,14 @@
             case I2C_WRITE:                 //xdot ack ->proc                                  
                 if(verbose)pc.printf("\n\r xdot ack -> proc done,going to sleep\n\r ");  
                 bPulseLoraWake = false;                
-//                gpio1 =0;
+#ifdef GPIO_ENABLE
+               gpio1 =0; 
+#endif
+                wait_us(wait_before_sleep_usec); //wait for i2c to complete data transfer before sleeping
                 sleep_wake_interrupt_only(deep_sleep);   ////sleep until rising edge of wake signal from proc
-               // wait_us(wait_after_sleep_usec); 
-//                gpio1 =1;
+#ifdef GPIO_ENABLE
+              gpio1 =1;  
+#endif
                 if(verbose)pc.printf("\n\r lora wake detected -> monitoring i2c bus\n\r ");                                                                 
                 break;                            
             case I2C_READ:      //xdot <- proc  
@@ -426,8 +402,8 @@
                                                                                    
                             if(verbose)pc.printf("\n\r setting antenna gain to %d ",pUpRadio->params.antennaGaindBi);                                   
                             dot->setAntennaGain(pUpRadio->params.antennaGaindBi);
-                            if(verbose)pc.printf("\n\r setting radio tx power to %d ",pUpRadio->params.txPowerdBm);                                   
-                            dot->setTxPower(pUpRadio->params.txPowerdBm);
+                            if(verbose)pc.printf("\n\r setting radio tx power to %d ",pUpRadio->params.txPower);                                   
+                            dot->setTxPower(pUpRadio->params.txPower);
                             if(verbose)pc.printf("\n\r setting tx datarate to %d ",pUpRadio->params.dataRate);                                   
                             dot->setTxDataRate(pUpRadio->params.dataRate);                         
                             if(verbose)pc.printf("\n\r setting tx inverted to %d ",(bool)pUpRadio->params.txInverted);                                   
@@ -455,9 +431,13 @@
                         pDwnRadio->params.minTxPowerdBm = dot->getMinTxPower();
                         pDwnRadio->params.aDR = dot->getAdr();
                         pDwnRadio->params.antennaGaindBi = dot->getAntennaGain();
-                        pDwnRadio->params.txPowerdBm = dot->getTxPower();                      
-                        pDwnRadio->params.dataRate = dot->getTxDataRate();                   
-                        pDwnRadio->params.dataRateCurrent = dot->getSessionDataRate();
+                        pDwnRadio->params.txPower = dot->getTxPower();    //programmed tx power (non-adr)                  
+                        pDwnRadio->params.dataRate = dot->getTxDataRate();   //programmed data rate (non-adr)                
+                        pDwnRadio->params.dataRateCurrent = dot->getSettings()->Session.TxDatarate;  //presently used data rate (adr can change this);see Lora.h                        
+                        pDwnRadio->params.txPowerCurrent = dot->getSettings()->Session.TxPower;//presently used tx power  (adr can change this);see Lora.h                        
+                        pDwnRadio->params.rx1DelayCurrent = dot->getSettings()->Session.RxDelay;//presently used rx1_delay;see Lora.h                        
+
+                        
                         break;    
                     case XDOT_CMD_GET_EUI:   //0307: modified to include radio parameter settings   
                         if(verbose)pc.printf("\n\r proc cmd: get EUI");