#ifndef _FOODDELIVERYBASE_H_ #define _FOODDELIVERYBASE_H_ #include "Arduino.h" /*wifi*/ #include "WiFi.h" /*mqtt*/ #include "PubSubClient.h" /*mavlink*/ #include "mavlink.h" /*json库*/ #include "ArduinoJson.h" /*异步库*/ #include "Ticker.h" class FoodCube { public: /*飞行航点任务相关属性*/ bool writeState = false; //是否是写入状态 int8_t writeSeq = -1; //飞控反馈 需写入航点序列号 int8_t futureSeq = 0; //记录将来要写入 航点序列号 int8_t missionArkType = -1; //航点写入是否成功 /*前端模拟遥控的油门通道*/ uint16_t channels[4] = { 1500, 1500, 1500, 1500 }; /*初始化*/ FoodCube(char* userSsid, char* userPassword, char* userMqttServer, int userMqttPort, char* userMqttName, char* userMqttPassword, uint8_t userMavlinkSerial,uint8_t userVoiceSerial); /*日志打印*/ void log(String val); void log(char* val); void log(int val); void log(IPAddress val); void log(bool val); void logln(String val); void logln(char* val); void logln(int val); void logln(IPAddress val); void logln(bool val); /*get set value*/ bool getIsInit(); void setIsInit(bool b); String getMacAdd(); /*wifi*/ void connectWifi(); /*mqtt*/ PubSubClient* mqttClient; //指向 mqtt服务器连接 对象 void connectMqtt(String topicSub[], int topicSubCount); void mqttLoop(String topicSub[], int topicSubCount); void subscribeTopic(String topicString, int Qos); void pubMQTTmsg(String topicString, String messageString); /*串口输出*/ void SWrite(uint8_t buf[], int len,uint8_t swSerial); /*声音模块控制*/ void playText(String str); uint8_t chekVoiceMcu(); void stopVoice(); /*mavlink*/ String setNBit(String str, uint8_t n, uint8_t i); void mav_request_data(); void comm_receive(void (*pFun)(mavlink_message_t*, mavlink_status_t*, uint8_t)); void mav_mission_count(uint8_t taskcount); void mav_mission_item(int8_t seq, uint8_t frame, uint8_t command, uint8_t current, uint8_t autocontinue, double param1, double param2, double param3, double param4, double x, double y, double z); void mav_set_mode(uint8_t SysState); void mav_command(uint8_t controlType, uint16_t param[]); void mav_channels_override(uint16_t chan[]); private: char* ssid; //wifi帐号 char* password; //wifi密码 char* mqttServer; //mqtt服务器地址 int mqttPort; //mqtt服务器端口 char* mqttName; //mqtt帐号 char* mqttPassword; //mqtt密码 uint8_t mavlinkSerial; //飞控占用的串口号 uint8_t voiceSerial; //飞控占用的串口号 bool isInit = true; //用来判断接收到第一次心跳时 重新向飞控 发送一个请求数据类型 WiFiClient wifiClient; //网络客户端 IPAddress localIp; //板子的IP地址 String macAdd; //板子的物理地址(已去掉冒号分隔符) }; #endif