80 lines
2.9 KiB
C
80 lines
2.9 KiB
C
|
|
#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
|