920MHz帯無線機モジュール ES920LR用ライブラリ いわゆるLoRaWAN

Dependents:   HYBRYD2018_IZU_GROUND_STATION HYBRYD2018_IZU_ROCKET Hybrid_IZU201811_GNDv1 Hybrid_IZU2019 ... more

Revision:
2:1c4cb24c834b
Parent:
1:febb32df437c
Child:
4:bfe82335b4e5
--- a/ES920LR.hpp	Tue Feb 20 17:58:41 2018 +0000
+++ b/ES920LR.hpp	Thu Mar 22 05:50:11 2018 +0000
@@ -77,7 +77,7 @@
 
 
 public:
-    ES920LR(Serial &serial, const int baud = 115200){
+    /*ES920LR(RawSerial &serial, const int baud = 115200){
         AB = BUFF_A;
         ser = &serial;
         _baud = baud;
@@ -86,11 +86,23 @@
         ser->attach(this, &ES920LR::es920lrHandler, Serial::RxIrq);//受信割り込み設定
         _es920lr_timer.start();//タイマースタート
         printf("hello world\r\n");
+    }*/
+    ES920LR(RawSerial &serial, RawSerial &pc, const int baud = 115200 ){
+        AB = BUFF_A;
+        ser = &serial;
+        _pc = &pc;
+        _baud = baud;
+        ser->baud(_baud);
+        init();
+        _es920lr_timer.start();//タイマースタート
+        printf("hello world\r\n");
+        wait(2.0f);
+        ser->attach(this, &ES920LR::es920lrHandler, Serial::RxIrq);//受信割り込み設定
     }
-
 private:
 
-    Serial * ser;
+    RawSerial * ser;
+    RawSerial * _pc;
     Timer _es920lr_timer;
     int _baud;
 
@@ -173,8 +185,9 @@
         memset(rcvPANID, '\0', 5);
         memset(rcvADDR, '\0', 5);
         header = 0;
-
-        ser->printf("start\r\n");
+        responseFlag = 0;
+        //ser->printf("start\r\n");
+        ser->baud(115200);
         wait(0.5f);
 
     }
@@ -191,7 +204,7 @@
 
     //送信バッファを送信する
     void send() {
-        printf("index:%d\r\n", sendIndex);
+        //_pc->printf("index:%d\r\n", sendIndex);
         sendBuff[0] = (uint8_t)(sendIndex - 1);//sendIndexは一つ大きいので
         sendBuff[sendIndex + 1] = '\0';//printf用に最後にnullを追加
         responseFlag = 1;
@@ -199,12 +212,12 @@
             ser->putc(sendBuff[i]);
         }
         //ser->printf("%s", sendBuff);//putcにすべきだった
-        
-        printf("send: ");
+        _pc->printf("index: %d\r\n", sendIndex);
+        _pc->printf("send: ");
         for (int i = 0; i < sendIndex; ++i) {
-            printf("%02X ", sendBuff[i]);
+            _pc->printf("%02X ", sendBuff[i]);
         }
-        printf("\r\n");
+        _pc->printf("\r\n");
         
 
         //初期化
@@ -386,7 +399,7 @@
         
         c = ser->getc();//1byte受信
 
-        //printf("%02X ", c);
+        //_pc->printf("%02X ", c);
 
         callTime[1] = _es920lr_timer.read_us();//現在の時刻を取得
         if (abs(callTime[1] - callTime[0]) > ES920LR_DATA_INTERVAL) {//前の呼び出しとのΔtから新しいデータか判断
@@ -408,11 +421,12 @@
                 firstFlag = 1;
                 writeBuffAddr[index + 1] = '\0';//終端文字追加
                 //printf("%s\r\n", writeBuffAddr);
-                printf("wbuf: ");
+                /*printf("wbuf: ");
                 for (int i = 0; i < 49; ++i) {
                     printf("%02X ", writeBuffAddr[i]);
                 }
                 printf("\r\n");
+                */
 
 
                 if (AB == BUFF_A) {//現在バッファAに書き込み中
@@ -434,11 +448,11 @@
                     //デバッグ
                     //printf("%s ", rssi);
                     for (int i = 0; i < 49; ++i) {
-                        printf("%02X ", data[i]);
+                        _pc->printf("%02X ", data[i]);
                     }
-                    printf("\r\n");
-                    printf("header: %02X\r\n", header);
-                    printf("size: %d\r\n", dataSize);
+                    _pc->printf("\r\n");
+                    _pc->printf("header: %02X\r\n", header);
+                    _pc->printf("size: %d\r\n", dataSize);
 
                     //ユーザー関数呼び出し
                     if (p_callFunc[(uint8_t)header] != NULL) {
@@ -448,7 +462,7 @@
                 else {//レスポンス
                     responseFlag = 0;
                     //デバッグ
-                    printf("res %s\r\n", readBuffAddr);
+                    _pc->printf("res %s\r\n", readBuffAddr);
                 }
             }