920MHz wireless module 'FEP' Library

Dependents:   CompactController_2017 quadOmni_yanagi NHK2017_octopus NHK2017_octopus2 ... more

Committer:
UCHITAKE
Date:
Fri Sep 15 09:35:22 2017 +0900
Revision:
7:2d308c99c668
Parent:
6:74e21751ac10
fix baud (115200)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eil4nyqn 0:bf959a15b079 1 #ifndef _FEP_H
eil4nyqn 0:bf959a15b079 2 #define _FEP_H
eil4nyqn 0:bf959a15b079 3
eil4nyqn 0:bf959a15b079 4 #define FEP_NO_RESPONSE (0x10) /* レスポンスが得られなかった */
eil4nyqn 5:9f7d2ba5e188 5 #define FEP_P0 (0x11) /* 正常終了 */
eil4nyqn 5:9f7d2ba5e188 6 #define FEP_P1 (0x12) /* コマンド受理、データ送信中 */
eil4nyqn 5:9f7d2ba5e188 7 #define FEP_N0 (0x13) /* コマンドエラー */
eil4nyqn 5:9f7d2ba5e188 8 #define FEP_N1 (0x14) /* データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった) */
eil4nyqn 5:9f7d2ba5e188 9 #define FEP_N2 (0x15) /* 割り当てなし */
eil4nyqn 5:9f7d2ba5e188 10 #define FEP_N3 (0x16) /* データ送信失敗(宛先の無線モデムのバッファがフルで受信できない) */
eil4nyqn 0:bf959a15b079 11
eil4nyqn 5:9f7d2ba5e188 12 #define FEP_DT_ERR (0x30)
eil4nyqn 5:9f7d2ba5e188 13 #define FEP_DT_STR (0x31)
eil4nyqn 5:9f7d2ba5e188 14 #define FEP_DT_BIN (0x32)
eil4nyqn 0:bf959a15b079 15
eil4nyqn 5:9f7d2ba5e188 16 #define FEP_RETRY 10 /* 再送回数 */
eil4nyqn 5:9f7d2ba5e188 17
eil4nyqn 5:9f7d2ba5e188 18 #define FEP_TIMEOUT_COUNT 40000
eil4nyqn 5:9f7d2ba5e188 19 #define FEP_LINE_LEN 273 /* 256(=maximam data length)+14(=header length)+2(=CRLF)+1(=null character) */
eil4nyqn 0:bf959a15b079 20
eil4nyqn 0:bf959a15b079 21 #include "mbed.h"
eil4nyqn 0:bf959a15b079 22
eil4nyqn 6:74e21751ac10 23 /** FEP-0x class.
eil4nyqn 6:74e21751ac10 24 * Used for communicating between MCU and MCU.
eil4nyqn 6:74e21751ac10 25 *
eil4nyqn 6:74e21751ac10 26 * Example(Receiver NculeoF446RE):
eil4nyqn 6:74e21751ac10 27 * @code
eil4nyqn 6:74e21751ac10 28 * #include "mbed.h"
eil4nyqn 6:74e21751ac10 29 * #include "FEP.h"
eil4nyqn 6:74e21751ac10 30 *
eil4nyqn 6:74e21751ac10 31 * FEP fep(PB_10,PB_11,199);
eil4nyqn 6:74e21751ac10 32 * Serial pc(USBTX,USBRX,115200);
eil4nyqn 6:74e21751ac10 33 *
eil4nyqn 6:74e21751ac10 34 * int main()
eil4nyqn 6:74e21751ac10 35 * {
eil4nyqn 6:74e21751ac10 36 * char data[256];
eil4nyqn 6:74e21751ac10 37 * uint8_t temp;
eil4nyqn 6:74e21751ac10 38 * while(1) {
eil4nyqn 6:74e21751ac10 39 * temp = fep.read(data, 6);
eil4nyqn 6:74e21751ac10 40 * if(temp == 0) {
eil4nyqn 6:74e21751ac10 41 * pc.printf("recieved\r\n");
eil4nyqn 6:74e21751ac10 42 * } else if(temp == 1) {
eil4nyqn 6:74e21751ac10 43 * pc.printf("recieved data error\r\n");
eil4nyqn 6:74e21751ac10 44 * } else if(temp == FEP_DT_ERR) {
eil4nyqn 6:74e21751ac10 45 * pc.printf("program or recieve error\r\n");
eil4nyqn 6:74e21751ac10 46 * } else if(temp == FEP_DT_BIN) {
eil4nyqn 6:74e21751ac10 47 * pc.printf("transmitter is binary mode\r\n");
eil4nyqn 6:74e21751ac10 48 * } else {
eil4nyqn 6:74e21751ac10 49 * pc.printf("No response\r\n");
eil4nyqn 6:74e21751ac10 50 * }
eil4nyqn 6:74e21751ac10 51 * }
eil4nyqn 6:74e21751ac10 52 * }
eil4nyqn 6:74e21751ac10 53 * @endcode
eil4nyqn 6:74e21751ac10 54 *
eil4nyqn 6:74e21751ac10 55 * Example(Transmitter NucleoF103RB):
eil4nyqn 6:74e21751ac10 56 * @code
eil4nyqn 6:74e21751ac10 57 * #include "mbed.h"
eil4nyqn 6:74e21751ac10 58 * #include "FEP.h"
eil4nyqn 6:74e21751ac10 59 *
eil4nyqn 6:74e21751ac10 60 * FEP fep(PB_10,PB_11,198);
eil4nyqn 6:74e21751ac10 61 * Serial pc(PB_6,PB_7,115200);
eil4nyqn 6:74e21751ac10 62 *
eil4nyqn 6:74e21751ac10 63 * int main()
eil4nyqn 6:74e21751ac10 64 * {
eil4nyqn 6:74e21751ac10 65 * char data[256];
eil4nyqn 6:74e21751ac10 66 * uint8_t temp,intensity;
eil4nyqn 6:74e21751ac10 67 * while(1) {
eil4nyqn 6:74e21751ac10 68 * data[0] = 'A';
eil4nyqn 6:74e21751ac10 69 * data[1] = 'B';
eil4nyqn 6:74e21751ac10 70 * data[2] = 'D';
eil4nyqn 6:74e21751ac10 71 * data[3] = 'E';
eil4nyqn 6:74e21751ac10 72 * temp=fep.puts(data,4);
eil4nyqn 6:74e21751ac10 73 * if(temp==FEP_P0) pc.printf("reciever has recieved\r\n");
eil4nyqn 6:74e21751ac10 74 * else pc.printf("Anything error\r\n");
eil4nyqn 6:74e21751ac10 75 * intensity = fep.getIntensity();
eil4nyqn 6:74e21751ac10 76 * }
eil4nyqn 6:74e21751ac10 77 * }
eil4nyqn 6:74e21751ac10 78 * @endcode
eil4nyqn 6:74e21751ac10 79 */
eil4nyqn 6:74e21751ac10 80
eil4nyqn 5:9f7d2ba5e188 81 class FEP
eil4nyqn 5:9f7d2ba5e188 82 {
eil4nyqn 0:bf959a15b079 83 public:
eil4nyqn 6:74e21751ac10 84 /** Create FEP instance
eil4nyqn 6:74e21751ac10 85 * @param tx Serial_TX
eil4nyqn 6:74e21751ac10 86 * @param rx Serial_RX
eil4nyqn 6:74e21751ac10 87 * @param addr 送信相手モジュールのアドレス(0~255)
eil4nyqn 6:74e21751ac10 88 * @param baud 通信速度(default=38400)
eil4nyqn 6:74e21751ac10 89 */
UCHITAKE 7:2d308c99c668 90 FEP(PinName tx, PinName rx, uint8_t addr, int baud=115200);
eil4nyqn 6:74e21751ac10 91 /** FEP destructor */
eil4nyqn 5:9f7d2ba5e188 92 ~FEP();
eil4nyqn 6:74e21751ac10 93 /** setn any data using txt mode
eil4nyqn 6:74e21751ac10 94 * @param *data 送信するデータの配列
eil4nyqn 6:74e21751ac10 95 * @param len 送信するデータの長さ
eil4nyqn 6:74e21751ac10 96 * @returns
eil4nyqn 6:74e21751ac10 97 * FEP_NO_RESPONSE レスポンスなし\n
eil4nyqn 6:74e21751ac10 98 * FEP_P0 正常終了\n
eil4nyqn 6:74e21751ac10 99 * FEP_N0 コマンドエラー\n
eil4nyqn 6:74e21751ac10 100 * FEP_N1 データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった)\n
eil4nyqn 6:74e21751ac10 101 * FEP_N2 割り当てなし\n
eil4nyqn 6:74e21751ac10 102 * FEP_N3 データ送信失敗(宛先の無線モデムのバッファがフルで受信できない)
eil4nyqn 6:74e21751ac10 103 */
eil4nyqn 5:9f7d2ba5e188 104 uint8_t puts(char *data, uint8_t len);
eil4nyqn 6:74e21751ac10 105 /** setn any data using binary mode
eil4nyqn 6:74e21751ac10 106 * @param *data 送信するデータの配列
eil4nyqn 6:74e21751ac10 107 * @param len 送信するデータの長さ
eil4nyqn 6:74e21751ac10 108 * @returns
eil4nyqn 6:74e21751ac10 109 * FEP_NO_RESPONSE レスポンスなし\n
eil4nyqn 6:74e21751ac10 110 * FEP_P0 正常終了\n
eil4nyqn 6:74e21751ac10 111 * FEP_N0 コマンドエラー\n
eil4nyqn 6:74e21751ac10 112 * FEP_N1 データ送信失敗(宛先の無線モデムの応答なし、キャリアセンスで送信出来なかった)\n
eil4nyqn 6:74e21751ac10 113 * FEP_N2 割り当てなし\n
eil4nyqn 6:74e21751ac10 114 * FEP_N3 データ送信失敗(宛先の無線モデムのバッファがフルで受信できない)
eil4nyqn 6:74e21751ac10 115 */
eil4nyqn 6:74e21751ac10 116 uint8_t putbin(char *ary, size_t len);
eil4nyqn 6:74e21751ac10 117 /** recieve any data(txt or binary mode)
eil4nyqn 6:74e21751ac10 118 * @param *data 受信データを格納する配列
eil4nyqn 6:74e21751ac10 119 * @param len 受信データの長さ
eil4nyqn 6:74e21751ac10 120 * @returns
eil4nyqn 6:74e21751ac10 121 * FEP_NO_RESPONSE レスポンスなし\n
eil4nyqn 6:74e21751ac10 122 * FEP_DT_ERR 受信エラー\n
eil4nyqn 6:74e21751ac10 123 * FEP_DT_STR TXT形式のデータを受信\n
eil4nyqn 6:74e21751ac10 124 * FEP_DT_BIN Binary形式のデータを受信\n
eil4nyqn 6:74e21751ac10 125 */
eil4nyqn 5:9f7d2ba5e188 126 uint8_t gets(char *data, uint8_t len);
eil4nyqn 6:74e21751ac10 127 /** recieve any data(txt mode)
eil4nyqn 6:74e21751ac10 128 * @param *data 受信データを格納する配列
eil4nyqn 6:74e21751ac10 129 * @param len 受信データの長さ
eil4nyqn 6:74e21751ac10 130 * @returns
eil4nyqn 6:74e21751ac10 131 * FEP_NO_RESPONSE レスポンスなし\n
eil4nyqn 6:74e21751ac10 132 * FEP_DT_ERR 受信エラー\n
eil4nyqn 6:74e21751ac10 133 * FEP_DT_STR TXT形式のデータを受信\n
eil4nyqn 6:74e21751ac10 134 * FEP_DT_BIN Binary形式のデータを受信\n
eil4nyqn 6:74e21751ac10 135 * 0 正常終了\n
eil4nyqn 6:74e21751ac10 136 * 1 受信データエラー
eil4nyqn 6:74e21751ac10 137 */
eil4nyqn 5:9f7d2ba5e188 138 uint8_t read(char *data, uint8_t len);
eil4nyqn 6:74e21751ac10 139 /** get transmitter address
eil4nyqn 6:74e21751ac10 140 * @returns
eil4nyqn 6:74e21751ac10 141 * transmitter address(0~255)
eil4nyqn 6:74e21751ac10 142 */
eil4nyqn 6:74e21751ac10 143 uint8_t getTransmitterAddr();
eil4nyqn 6:74e21751ac10 144 /** get intensity
eil4nyqn 6:74e21751ac10 145 * @returns
eil4nyqn 6:74e21751ac10 146 * intensity(absolute)
eil4nyqn 6:74e21751ac10 147 */
eil4nyqn 6:74e21751ac10 148 uint8_t getIntensity();
eil4nyqn 6:74e21751ac10 149 /** reset the module
eil4nyqn 6:74e21751ac10 150 * @returns
eil4nyqn 6:74e21751ac10 151 * FEP_P1 正常終了
eil4nyqn 6:74e21751ac10 152 */
eil4nyqn 5:9f7d2ba5e188 153 uint8_t reset();
eil4nyqn 0:bf959a15b079 154 private:
eil4nyqn 0:bf959a15b079 155 Serial serial;
eil4nyqn 5:9f7d2ba5e188 156 void hex2dec(char *data,char *str,uint8_t data_len);
eil4nyqn 5:9f7d2ba5e188 157 int rxHandler(char *data);
eil4nyqn 5:9f7d2ba5e188 158 int ctoi(char c);
eil4nyqn 5:9f7d2ba5e188 159 uint8_t _address;
eil4nyqn 5:9f7d2ba5e188 160 uint8_t _transmitterAddr;
eil4nyqn 0:bf959a15b079 161 uint8_t _intensity;
eil4nyqn 6:74e21751ac10 162 uint8_t getResponse();
eil4nyqn 0:bf959a15b079 163 };
eil4nyqn 0:bf959a15b079 164
eil4nyqn 0:bf959a15b079 165 #endif /*_FEP_H*/