920MHz wireless module 'FEP' Library
Dependents: CompactController_2017 quadOmni_yanagi NHK2017_octopus NHK2017_octopus2 ... more
FEP.h
- Committer:
- UCHITAKE
- Date:
- 2017-09-15
- Revision:
- 7:2d308c99c668
- Parent:
- 6:74e21751ac10
File content as of revision 7:2d308c99c668:
#ifndef _FEP_H #define _FEP_H #define FEP_NO_RESPONSE (0x10) /* レスポンスが得られなかった */ #define FEP_P0 (0x11) /* 正常終了 */ #define FEP_P1 (0x12) /* コマンド受理、データ送信中 */ #define FEP_N0 (0x13) /* コマンドエラー */ #define FEP_N1 (0x14) /* データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった) */ #define FEP_N2 (0x15) /* 割り当てなし */ #define FEP_N3 (0x16) /* データ送信失敗(宛先の無線モデムのバッファがフルで受信できない) */ #define FEP_DT_ERR (0x30) #define FEP_DT_STR (0x31) #define FEP_DT_BIN (0x32) #define FEP_RETRY 10 /* 再送回数 */ #define FEP_TIMEOUT_COUNT 40000 #define FEP_LINE_LEN 273 /* 256(=maximam data length)+14(=header length)+2(=CRLF)+1(=null character) */ #include "mbed.h" /** FEP-0x class. * Used for communicating between MCU and MCU. * * Example(Receiver NculeoF446RE): * @code * #include "mbed.h" * #include "FEP.h" * * FEP fep(PB_10,PB_11,199); * Serial pc(USBTX,USBRX,115200); * * int main() * { * char data[256]; * uint8_t temp; * while(1) { * temp = fep.read(data, 6); * if(temp == 0) { * pc.printf("recieved\r\n"); * } else if(temp == 1) { * pc.printf("recieved data error\r\n"); * } else if(temp == FEP_DT_ERR) { * pc.printf("program or recieve error\r\n"); * } else if(temp == FEP_DT_BIN) { * pc.printf("transmitter is binary mode\r\n"); * } else { * pc.printf("No response\r\n"); * } * } * } * @endcode * * Example(Transmitter NucleoF103RB): * @code * #include "mbed.h" * #include "FEP.h" * * FEP fep(PB_10,PB_11,198); * Serial pc(PB_6,PB_7,115200); * * int main() * { * char data[256]; * uint8_t temp,intensity; * while(1) { * data[0] = 'A'; * data[1] = 'B'; * data[2] = 'D'; * data[3] = 'E'; * temp=fep.puts(data,4); * if(temp==FEP_P0) pc.printf("reciever has recieved\r\n"); * else pc.printf("Anything error\r\n"); * intensity = fep.getIntensity(); * } * } * @endcode */ class FEP { public: /** Create FEP instance * @param tx Serial_TX * @param rx Serial_RX * @param addr 送信相手モジュールのアドレス(0~255) * @param baud 通信速度(default=38400) */ FEP(PinName tx, PinName rx, uint8_t addr, int baud=115200); /** FEP destructor */ ~FEP(); /** setn any data using txt mode * @param *data 送信するデータの配列 * @param len 送信するデータの長さ * @returns * FEP_NO_RESPONSE レスポンスなし\n * FEP_P0 正常終了\n * FEP_N0 コマンドエラー\n * FEP_N1 データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった)\n * FEP_N2 割り当てなし\n * FEP_N3 データ送信失敗(宛先の無線モデムのバッファがフルで受信できない) */ uint8_t puts(char *data, uint8_t len); /** setn any data using binary mode * @param *data 送信するデータの配列 * @param len 送信するデータの長さ * @returns * FEP_NO_RESPONSE レスポンスなし\n * FEP_P0 正常終了\n * FEP_N0 コマンドエラー\n * FEP_N1 データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった)\n * FEP_N2 割り当てなし\n * FEP_N3 データ送信失敗(宛先の無線モデムのバッファがフルで受信できない) */ uint8_t putbin(char *ary, size_t len); /** recieve any data(txt or binary mode) * @param *data 受信データを格納する配列 * @param len 受信データの長さ * @returns * FEP_NO_RESPONSE レスポンスなし\n * FEP_DT_ERR 受信エラー\n * FEP_DT_STR TXT形式のデータを受信\n * FEP_DT_BIN Binary形式のデータを受信\n */ uint8_t gets(char *data, uint8_t len); /** recieve any data(txt mode) * @param *data 受信データを格納する配列 * @param len 受信データの長さ * @returns * FEP_NO_RESPONSE レスポンスなし\n * FEP_DT_ERR 受信エラー\n * FEP_DT_STR TXT形式のデータを受信\n * FEP_DT_BIN Binary形式のデータを受信\n * 0 正常終了\n * 1 受信データエラー */ uint8_t read(char *data, uint8_t len); /** get transmitter address * @returns * transmitter address(0~255) */ uint8_t getTransmitterAddr(); /** get intensity * @returns * intensity(absolute) */ uint8_t getIntensity(); /** reset the module * @returns * FEP_P1 正常終了 */ uint8_t reset(); private: Serial serial; void hex2dec(char *data,char *str,uint8_t data_len); int rxHandler(char *data); int ctoi(char c); uint8_t _address; uint8_t _transmitterAddr; uint8_t _intensity; uint8_t getResponse(); }; #endif /*_FEP_H*/