PullupDev/src/FoodDeliveryBase.h

80 lines
2.9 KiB
C
Raw Normal View History

#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