920MHz帯無線機モジュール ES920LR用ライブラリ いわゆるLoRaWAN
Dependents: HYBRYD2018_IZU_GROUND_STATION HYBRYD2018_IZU_ROCKET Hybrid_IZU201811_GNDv1 Hybrid_IZU2019 ... more
Diff: ES920LR.hpp
- Revision:
- 1:febb32df437c
- Parent:
- 0:3dede5174e85
- Child:
- 2:1c4cb24c834b
diff -r 3dede5174e85 -r febb32df437c ES920LR.hpp --- a/ES920LR.hpp Tue Feb 20 02:08:18 2018 +0000 +++ b/ES920LR.hpp Tue Feb 20 17:58:41 2018 +0000 @@ -1,6 +1,6 @@ #pragma once /* -* ES920LR ライブラリ ver0.2.1 +* ES920LR ライブラリ ver0.2.2 * RSSI値、アドレス付与はまだ未対応です。 * データ形式はbinaryです。asciiには未対応です。 * 設定の変更はあらかじめ行うという形式です。 @@ -115,7 +115,7 @@ }; union ES920LR_CAST es920lr_cast; - char data[51]; + int sendDataSize; void(*p_callFunc[256])(void); char sendBuff[52]; @@ -138,16 +138,9 @@ ON_OFF _rssiAdd;//RSSI値を付加するかどうか int sendIndex;//送信バッファの現在のインデックス,1以上51以下 - int responseFlag = 0;//送信後のレスポンスを受け取るかどうか - -public: + int responseFlag;//送信後のレスポンスを受け取るかどうか - char rssi[5];//最新の電波強度 - char rcvPANID[5]; - char rcvADDR[5]; - char header;//最新のデータのヘッダー - - void init(){ + void init() { _nodeNumber = Coordinator; _band_width = _125kHz; _diffusivity = 7;//拡散率 @@ -186,6 +179,16 @@ } +public: + + char data[51]; + char rssi[5];//最新の電波強度 + char rcvPANID[5]; + char rcvADDR[5]; + char header;//最新のデータのヘッダー + + + //送信バッファを送信する void send() { printf("index:%d\r\n", sendIndex); @@ -298,6 +301,80 @@ return; } + int asciiToNumber(char c) { + //printf("%c ", c); + int temp = (int)c; + if (temp >= 65) {//A ~ F + return (temp - 55); + } + else {//0 ~ 9 + return (temp - 48); + } + } + + //RSSI値を数値に変換する + int calcRSSI() { + return asciiToNumber(rssi[0]) * 4096 + asciiToNumber(rssi[1]) * 256 + asciiToNumber(rssi[2]) * 16 + asciiToNumber(rssi[3]); + } + + void dummyFunc() { + printf("ATTACH NO FUNCTION\r\n"); + } + + short toShort(char *array) { + //es920lr_cast.s = ((uint16_t)array[0] << 8) | (uint16_t)array[1]; + es920lr_cast.u[0] = array[0]; + es920lr_cast.u[1] = array[1]; + return es920lr_cast.s; + } + short toShort(int i) { + return toShort(&data[i]); + } + + int toInt(char *array) { + //es920lr_cast.i = ((uint32_t)array[0] << 24) | ((uint32_t)array[1] << 16) | ((uint32_t)array[2] << 8) | (uint32_t)array[3]; + es920lr_cast.u[0] = array[0]; + es920lr_cast.u[1] = array[1]; + es920lr_cast.u[2] = array[2]; + es920lr_cast.u[3] = array[3]; + return es920lr_cast.i; + } + int toInt(int i) { + return toInt(&data[i]); + } + + float toFloat(char *array) { + es920lr_cast.u[0] = array[0]; + es920lr_cast.u[1] = array[1]; + es920lr_cast.u[2] = array[2]; + es920lr_cast.u[3] = array[3]; + return es920lr_cast.f; + } + float toFloat(int i) { + return toFloat(&data[i]); + } + + double toDouble(char *array) { + for (int i = 0; i< 8; ++i) { + es920lr_cast.u[i] = array[i]; + } + return es920lr_cast.d; + } + double toDouble(int i) { + return toDouble(&data[i]); + } + + long toLong(char *array) { + for (int i = 0; i < 8; ++i) { + es920lr_cast.u[i] = array[i]; + } + return es920lr_cast.l; + } + long toLong(int i) { + return toLong(&data[i]); + } + +private: //1文字受信するたびに呼ばれ、データを受信バッファに入れる void es920lrHandler() { @@ -390,16 +467,7 @@ ser->baud(baudrate); } - int asciiToNumber(char c) { - //printf("%c ", c); - int temp = (int)c; - if (temp >= 65) {//A ~ F - return (temp - 55); - } - else {//0 ~ 9 - return (temp - 48); - } - } + /** @bref データを取得します @@ -474,67 +542,7 @@ } - //RSSI値を数値に変換する - int calcRSSI() { - return asciiToNumber(rssi[0]) * 4096 + asciiToNumber(rssi[1]) * 256 + asciiToNumber(rssi[2]) * 16 + asciiToNumber(rssi[3]); - } - - void dummyFunc() { - printf("ATTACH NO FUNCTION\r\n"); - } - - short toShort(char *array) { - //es920lr_cast.s = ((uint16_t)array[0] << 8) | (uint16_t)array[1]; - es920lr_cast.u[0] = array[0]; - es920lr_cast.u[1] = array[1]; - return es920lr_cast.s; - } - short toShort(int i) { - return toShort(&data[i]); - } - - int toInt(char *array) { - //es920lr_cast.i = ((uint32_t)array[0] << 24) | ((uint32_t)array[1] << 16) | ((uint32_t)array[2] << 8) | (uint32_t)array[3]; - es920lr_cast.u[0] = array[0]; - es920lr_cast.u[1] = array[1]; - es920lr_cast.u[2] = array[2]; - es920lr_cast.u[3] = array[3]; - return es920lr_cast.i; - } - int toInt(int i) { - return toInt(&data[i]); - } - - float toFloat(char *array) { - es920lr_cast.u[0] = array[0]; - es920lr_cast.u[1] = array[1]; - es920lr_cast.u[2] = array[2]; - es920lr_cast.u[3] = array[3]; - return es920lr_cast.f; - } - float toFloat(int i) { - return toFloat(&data[i]); - } - - double toDouble(char *array) { - for (int i = 0; i< 8; ++i) { - es920lr_cast.u[i] = array[i]; - } - return es920lr_cast.d; - } - double toDouble(int i) { - return toDouble(&data[i]); - } - - long toLong(char *array) { - for (int i = 0; i < 8; ++i) { - es920lr_cast.u[i] = array[i]; - } - return es920lr_cast.l; - } - long toLong(int i) { - return toLong(&data[i]); - } + };