SerialLibrary for arrc

Committer:
hamohamo
Date:
Sat Dec 11 02:37:36 2021 +0000
Revision:
0:4801795a9073
SerialLibrary;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hamohamo 0:4801795a9073 1 #ifndef _52SERIAL
hamohamo 0:4801795a9073 2 #define _52SERIAL
hamohamo 0:4801795a9073 3
hamohamo 0:4801795a9073 4 #include "mbed.h"
hamohamo 0:4801795a9073 5 #include "Buffer52.hpp"
hamohamo 0:4801795a9073 6 /*
hamohamo 0:4801795a9073 7 使用方法
hamohamo 0:4801795a9073 8 ARRC::gotoSerial ser(PC_12,PD_2,9600);
hamohamo 0:4801795a9073 9 DigitalOut rede(PH_1);
hamohamo 0:4801795a9073 10 送信側 rede = 1;
hamohamo 0:4801795a9073 11 受信側 rede = 0;
hamohamo 0:4801795a9073 12
hamohamo 0:4801795a9073 13 publish(id,送信する値,INT or FLOAT or FUNC(送信する型の指定));
hamohamo 0:4801795a9073 14 INT,FLOAT 送信と受信でなるべく合わせること。
hamohamo 0:4801795a9073 15 FUNC 受信側で設定した関数に値を引数として送信する。
hamohamo 0:4801795a9073 16 subscribe(id,変数または関数のポインタ(例 &value , func));
hamohamo 0:4801795a9073 17
hamohamo 0:4801795a9073 18 受信側の関数(scrp_slaveでいうところのコマンド)の宣言方法
hamohamo 0:4801795a9073 19
hamohamo 0:4801795a9073 20 void func(Pack data){
hamohamo 0:4801795a9073 21 printf("subscribed_int:%d\n",data.integer);
hamohamo 0:4801795a9073 22 printf("subscribed_float:%d\n",data.decimal);
hamohamo 0:4801795a9073 23 led = !led;
hamohamo 0:4801795a9073 24 }
hamohamo 0:4801795a9073 25 ToDo
hamohamo 0:4801795a9073 26 redeを組み込む
hamohamo 0:4801795a9073 27 送受信可能にする
hamohamo 0:4801795a9073 28 */
hamohamo 0:4801795a9073 29
hamohamo 0:4801795a9073 30 namespace ARRC{
hamohamo 0:4801795a9073 31
hamohamo 0:4801795a9073 32 const unsigned STARTDATA = 0x01;
hamohamo 0:4801795a9073 33 const unsigned ENDDATA = 0x09;
hamohamo 0:4801795a9073 34 const unsigned INT = 1;
hamohamo 0:4801795a9073 35 const unsigned FLOAT = 2;
hamohamo 0:4801795a9073 36 const unsigned FUNC = 3;
hamohamo 0:4801795a9073 37
hamohamo 0:4801795a9073 38 typedef union {
hamohamo 0:4801795a9073 39 float decimal;
hamohamo 0:4801795a9073 40 int integer;
hamohamo 0:4801795a9073 41 } Pack;
hamohamo 0:4801795a9073 42
hamohamo 0:4801795a9073 43 typedef void (*Func)(Pack data);
hamohamo 0:4801795a9073 44
hamohamo 0:4801795a9073 45 typedef union {
hamohamo 0:4801795a9073 46 float* decimal;
hamohamo 0:4801795a9073 47 int* integer;
hamohamo 0:4801795a9073 48 } DATA;
hamohamo 0:4801795a9073 49
hamohamo 0:4801795a9073 50 class gotoSerial{
hamohamo 0:4801795a9073 51 public:
hamohamo 0:4801795a9073 52 gotoSerial(PinName tx,PinName rx,int baudrate);
hamohamo 0:4801795a9073 53 bool publish(unsigned id,int num,unsigned type);
hamohamo 0:4801795a9073 54 bool publish(unsigned id,float num,unsigned type);
hamohamo 0:4801795a9073 55 bool subscribe(unsigned id,int* var);
hamohamo 0:4801795a9073 56 bool subscribe(unsigned id,float* var);
hamohamo 0:4801795a9073 57 bool subscribe(unsigned id,Func func);
hamohamo 0:4801795a9073 58 private:
hamohamo 0:4801795a9073 59 void interrupt_read();
hamohamo 0:4801795a9073 60 bool update();
hamohamo 0:4801795a9073 61 int sub_vars_size;
hamohamo 0:4801795a9073 62 std::vector<DATA> sub_vars;
hamohamo 0:4801795a9073 63 std::vector<Func> sub_funcs;
hamohamo 0:4801795a9073 64 Buffer<int8_t> buf;
hamohamo 0:4801795a9073 65 Serial ser;
hamohamo 0:4801795a9073 66 };
hamohamo 0:4801795a9073 67
hamohamo 0:4801795a9073 68 }
hamohamo 0:4801795a9073 69
hamohamo 0:4801795a9073 70 #endif