UGT LD100 (mDot embedded) example code

Dependencies:   libmDot-mbed5 ISL29011

Files at this revision

API Documentation at this revision

Comitter:
Frederick_H
Date:
Mon Aug 12 06:25:52 2019 +0000
Parent:
40:c3bb2f5eac95
Commit message:
Change to AS923 channel plan and add LED demo code

Changed in this revision

examples/example_config.h Show annotated file Show diff for this revision Revisions of this file
examples/inc/LD100_util.h Show annotated file Show diff for this revision Revisions of this file
examples/src/LD100_example.cpp Show annotated file Show diff for this revision Revisions of this file
examples/src/LD100_util.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/examples/example_config.h	Mon Jul 08 11:34:11 2019 +0000
+++ b/examples/example_config.h	Mon Aug 12 06:25:52 2019 +0000
@@ -25,7 +25,7 @@
 //      CP_AS923_JAPAN
 //      CP_IN865
 #if !defined(CHANNEL_PLAN)
-#define CHANNEL_PLAN CP_US915
+#define CHANNEL_PLAN CP_AS923
 #endif
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/inc/LD100_util.h	Mon Aug 12 06:25:52 2019 +0000
@@ -0,0 +1,40 @@
+#ifndef __LD100_UTIL_H__
+#define __LD100_UTIL_H__
+
+#include "mbed.h"
+#include "mDot.h"
+
+/**
+ * Turn On/Off D4 LED on LD100 board
+ *
+ * @param OnOff true to turn on, false to turn off
+ *        
+ */
+void LED_D4(bool OnOff);     
+
+/**
+ * Turn On/Off D5 LED on LD100 board
+ *
+ * @param OnOff true to turn on, false to turn off
+ *        
+ */
+void LED_D5(bool OnOff);
+
+/**
+ * Turn On/Off D6 LED on LD100 board
+ *
+ * @param OnOff true to turn on, false to turn off
+ *        
+ */
+void LED_D6(bool OnOff);     
+
+/**
+ * Initialize on board TCA6424
+ *
+ * @return 0 mean OK
+ *        
+ */
+int TCA6424_init();
+
+
+#endif
--- a/examples/src/LD100_example.cpp	Mon Jul 08 11:34:11 2019 +0000
+++ b/examples/src/LD100_example.cpp	Mon Aug 12 06:25:52 2019 +0000
@@ -1,5 +1,6 @@
 #include "dot_util.h"
 #include "RadioEvent.h"
+#include "LD100_util.h"
  
 #if ACTIVE_EXAMPLE == LD100_EXAMPLE
 
@@ -22,8 +23,8 @@
 // * either the network name and passphrase can be used or //
 //     the network ID (8 bytes) and KEY (16 bytes)         //
 /////////////////////////////////////////////////////////////
-static std::string network_name = "MultiTech";
-static std::string network_passphrase = "MultiTech";
+static std::string network_name = "MTCDT-18446018";
+static std::string network_passphrase = "jointech_passphrase";
 static uint8_t network_id[] = { 0x57, 0xD7, 0x64, 0xA4, 0x0C, 0xFE, 0xB1, 0xDF };
 static uint8_t network_key[] = { 0x63, 0x81, 0x87, 0x8D, 0x11, 0x45, 0x88, 0x13, 0x30, 0xCF, 0xCF, 0xBC, 0x1D, 0x48, 0xA8, 0xEC };
 static uint8_t frequency_sub_band = 2;
@@ -299,17 +300,26 @@
         dot->restoreNetworkSession();
     }
 
+    dot->setLogLevel(mts::MTSLog::DEBUG_LEVEL);
+    TCA6424_init();
+
     while (true) {
+        LED_D6(true);
 
+        
+        LED_D5(true);                
         // join network if not joined
         if (!dot->getNetworkJoinStatus()) {
             join_network();
         }
+        LED_D5(false);
         
+        LED_D4(true);                
         // Read Sensor Data and Upload it to gateway
 //        mts::MTSLog::setLogLevel(mts::MTSLog::DEBUG_LEVEL); // enable debug log
 //       ReadBatteryLevelAndSend();
         ReadRS485SensorAndSend();
+        LED_D4(false);        
 
         // if going into deepsleep mode, save the session so we don't need to join again after waking up
         // not necessary if going into sleep mode since RAM is retained
@@ -317,6 +327,8 @@
             logInfo("saving network session to NVM");
             dot->saveNetworkSession();
         }
+        
+        LED_D6(false);
 
         // ONLY ONE of the three functions below should be uncommented depending on the desired wakeup method
         //sleep_wake_rtc_only(deep_sleep);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/src/LD100_util.cpp	Mon Aug 12 06:25:52 2019 +0000
@@ -0,0 +1,80 @@
+#include "LD100_util.h"
+
+void LED_D6(bool OnOff)
+{ 
+   DigitalOut LED6(D2);
+   if (OnOff) 
+    LED6 = 1;
+   else
+    LED6 = 0;
+}
+
+DigitalOut resetPin(PA_4);
+
+int TCA6424_init(I2C& i2c_port)
+{
+    char cmd[4];
+    const int saddr = 0x22 << 1;
+    resetPin = 1;
+    wait_ms(1);    
+    resetPin = 0;
+    wait_ms(1);    
+    resetPin = 1;
+    wait_ms(1);    
+   
+    cmd[0]= 0x05; //Output port 1 
+    cmd[1]&= 0x9F; //10011111, set P15, P16 to output low
+    i2c_port.write(saddr, cmd, 2);
+        
+    cmd[0]= 0x0D; //Configuration port 1 
+    cmd[1]= 0x9F; //10011111, turn P15, P16 to output pin
+    i2c_port.write(saddr, cmd, 2);
+  return 0;
+}
+
+
+int TCA6424_init()
+{
+  I2C i2c_port(I2C_SDA, I2C_SCL);
+  return TCA6424_init(i2c_port);
+}
+
+void LED_D4(bool OnOff)
+{ 
+   char cmd[4];
+   const int saddr = 0x22 << 1;
+   I2C i2c_port(I2C_SDA, I2C_SCL);
+  
+   cmd[0]= 0x05; //Output port 1 
+   i2c_port.write(saddr, cmd, 1);        
+   i2c_port.read(saddr, cmd + 1, 1);  //read recent state
+    
+   cmd[0]= 0x05; //Output port 1 
+   if (OnOff)
+    cmd[1]|= 0x40; //01000000, set P16 to output High
+   else
+    cmd[1]&= 0xBF; //10111111, set P16 to output low
+   i2c_port.write(saddr, cmd, 2);
+}
+
+void LED_D5(bool OnOff)
+{ 
+   char cmd[4];
+   const int saddr = 0x22 << 1;
+   I2C i2c_port(I2C_SDA, I2C_SCL);
+  
+   cmd[0]= 0x05; //Output port 1 
+   i2c_port.write(saddr, cmd, 1);        
+   i2c_port.read(saddr, cmd + 1, 1);  //read recent state
+    
+   cmd[0]= 0x05; //Output port 1 
+   if (OnOff)
+    cmd[1]|= 0x20; //00100000, set P15 to output High
+   else
+    cmd[1]&= 0xDF; //11011111, set P15 to output low
+   i2c_port.write(saddr, cmd, 2);
+}
+
+
+//#define Pin_Charging    IOExpander,ugt::TCA6424_IOPin::P15
+//#define Pin_ChargeDone  IOExpander,ugt::TCA6424_IOPin::P16