212 lines
6.6 KiB
C
212 lines
6.6 KiB
C
#ifndef _ECHO_CLOUD_H_
|
|
#define _ECHO_CLOUD_H_
|
|
|
|
#include "generic/typedef.h"
|
|
#include "http/http_cli.h"
|
|
#include "json_c/json_tokener.h"
|
|
|
|
#define HTTP_KEEP_ALIVE
|
|
|
|
#define WECHAT_ID_LEN 32
|
|
#define DEVICE_ID_LEN 32
|
|
#define PASSWORD_LEN 64
|
|
#define UUID_LEN 64
|
|
#define NONCE_LEN 32
|
|
#define HASH_LEN 64
|
|
#define AUTH_KEY_LEN 32
|
|
#define CODE_LEN 32
|
|
#define TOKEN_LENGTH 64
|
|
#define USERNAME_LEN (UUID_LEN + DEVICE_ID_LEN + NONCE_LEN + 2)
|
|
|
|
|
|
struct echo_cloud_auth_parm {
|
|
char device_id[DEVICE_ID_LEN + 1];
|
|
char channel_uuid[UUID_LEN + 1];
|
|
char hash[HASH_LEN + 1];
|
|
};
|
|
|
|
struct httpc_token_info {
|
|
char media_play_token[TOKEN_LENGTH + 1];
|
|
char ai_dialog_token[TOKEN_LENGTH + 1];
|
|
char intercom_token[TOKEN_LENGTH + 1];
|
|
char intercom_notify_token[TOKEN_LENGTH + 1];
|
|
char alert_schedule_token[TOKEN_LENGTH + 1];
|
|
};
|
|
|
|
struct echo_cloud_http_hdl {
|
|
struct echo_cloud_auth_parm *auth;
|
|
void *priv;
|
|
int (*out_cb)(void *priv, const char *data);
|
|
u32 timeout_ms;
|
|
httpcli_ctx ctx;
|
|
httpcli_ctx rec_ctx;
|
|
http_body_obj body;
|
|
http_body_obj rec_body;
|
|
};
|
|
|
|
struct echo_cloud_hdl {
|
|
struct echo_cloud_http_hdl http;
|
|
struct echo_cloud_auth_parm auth;
|
|
struct httpc_token_info token;
|
|
int heartbeat_timer;
|
|
int sync_timer;
|
|
u8 is_record;
|
|
u8 media_play_opt;
|
|
u8 media_play_state;
|
|
char *media_url;
|
|
u32 media_url_len;
|
|
};
|
|
|
|
enum echo_cloud_sdk_events {
|
|
ECHO_CLOUD_SPEAK_END = 0x01,
|
|
ECHO_CLOUD_MEDIA_END = 0x02,
|
|
ECHO_CLOUD_PLAY_PAUSE = 0x03,
|
|
ECHO_CLOUD_PREVIOUS_SONG = 0x04,
|
|
ECHO_CLOUD_NEXT_SONG = 0x05,
|
|
ECHO_CLOUD_VOLUME_CHANGE = 0X06,
|
|
ECHO_CLOUD_VOLUME_INCR = 0x07,
|
|
ECHO_CLOUD_VOLUME_DECR = 0x08,
|
|
ECHO_CLOUD_VOLUME_MUTE = 0x09,
|
|
ECHO_CLOUD_RECORD_START = 0x0a,
|
|
ECHO_CLOUD_RECORD_SEND = 0x0b,
|
|
ECHO_CLOUD_RECORD_STOP = 0x0c,
|
|
ECHO_CLOUD_VOICE_MODE = 0x0d,
|
|
ECHO_CLOUD_MEDIA_STOP = 0x0e,
|
|
ECHO_CLOUD_BIND_DEVICE = 0x0f,
|
|
ECHO_CLOUD_RECORD_ERR = 0x10,
|
|
ECHO_CLOUD_COLLECT_RESOURCE = 0x11,
|
|
ECHO_CLOUD_DEVICE_CODE_REPORT = 0x12,
|
|
ECHO_CLOUD_CHILD_LOCK_CHANGE = 0x13,
|
|
ECHO_CLOUD_MQTT_MSG_DEAL = 0x20,
|
|
ECHO_CLOUD_QUIT = 0xff,
|
|
};
|
|
|
|
typedef enum DEVICE_MSG_TYPE {
|
|
//设备事件
|
|
DEVICE_LOG, //device.log
|
|
DEVICE_HEARTBEAT, //device.heartbeat
|
|
DEVICE_ONLINE, //device.online
|
|
DEVICE_OFFLINE, //device.offline
|
|
|
|
BANDWIDTH_CHANGED, //bandwidth.changed
|
|
VOLUME_CHANGED, //volume.changed
|
|
LIGHT_CHANGED, //light.changed
|
|
BATTERY_CHANGED, //battery.changed
|
|
BATTERY_CHARGE_STARTED, //battery.charge_started
|
|
BATTERY_CHARGE_ENDED, //battery.charge_ended
|
|
|
|
MEDIA_PLAYER_STARTED, //media_player.started
|
|
MEDIA_PLAYER_FINISHED, //media_player.finished
|
|
MEDIA_PLAYER_STOPPED, //media_player.stopped
|
|
MEDIA_PLAYER_PAUSED, //media_player.paused
|
|
MEDIA_PLAYER_RESUMED, //media_player.resumed
|
|
MEDIA_PLAYER_PROGRESS_CHANGER, //media_player.progress_changed
|
|
|
|
AI_DIALOG_STARTED, //ai_dialog.started
|
|
AI_DIALOG_FINISHED, //ai_dialog.finished
|
|
AI_DIALOG_STOPPED, //ai_dialog.stopped
|
|
|
|
INTERCOM_STARTED, //intercom.started
|
|
INTERCOM_FINISHED, //intercom.finished
|
|
INTERCOM_STOPPED, //intercom.stopped
|
|
INTERCOM_ALERTED, //intercom.alerted
|
|
|
|
ALERT_SCHEDULED, //alert.scheduled
|
|
ALERT_CANCELED, //alert.canceled
|
|
ALERT_TRIGGERED, //alert.triggered
|
|
ALERT_FINISHED, //alert.finished
|
|
ALERT_TERMINATED, //alert.terminated
|
|
|
|
CHILD_LOCK_CHANGED, //child_lock.changed
|
|
|
|
FIRMWARE_UPGRADE_STARTED, //firmware.upgrade_started
|
|
FIRMWARE_UPGRADE_SUCCEEDED, //firmware.upgrade_succeeded
|
|
FIRMWARE_UPGRADE_FAILED, //firmware.upgrade_failed
|
|
|
|
SOUNDWAVE_CONF_SUCC, //wifi.soundwave_configuration_succeeded
|
|
|
|
//设备控制事件
|
|
AI_DIALOG_INPUT, //ai_dialog.input.device
|
|
|
|
INTERCOM_RECEIVE_DEVICE, //intercom.receive.device
|
|
DEVICE_REQUEST_CODE, //device.request_code.device
|
|
|
|
VOLUME_CHANGE_DEVICE, //volume.change.device
|
|
MEDIA_PLAYER_PAUSE_DEVICE, //media_player.pause.device
|
|
MEDIA_PLAYER_RESUME_DEVICE, //media_player.resume.device
|
|
MEDIA_PLAYER_PREVIOUS_DEVICE, //media_player.previous.device
|
|
MEDIA_PLAYER_NEXT_DEVICE, //media_player.next.device
|
|
MEDIA_PLAYER_FAVORITE_DEVICE, //media_player.favorite.device
|
|
MEDIA_PLAYER_PLAY_FAVORITE_DEVICE, //media_player.play_favorite.device
|
|
|
|
CHILD_LOCK_CHANGE_DEVICE, //child_lock.change.device
|
|
MEDIA_ADD_FAVORITE, //media_player.add_favorite.device
|
|
MEDIA_DELETE_FAVORITE, //media_player.delete_favorite.device
|
|
CUSTOM_EVENT, //custom.event.device
|
|
PLAY_CUSTOM_ART_LISTS, //media_player.play_custom_art_lists.device
|
|
PLAYLIST_MODE_CHANGE, //playlist_mode.change.device
|
|
SKILL_ENTER, //skill.enter.device
|
|
GET_MONTH_AGE, //month_age.get.device
|
|
|
|
MAX_DEVICE_MSG,
|
|
} DEVICE_MSG_TYPE;
|
|
|
|
enum {
|
|
MEDIA_WAIT_PLAY,
|
|
MEDIA_HAS_PALY,
|
|
MEDIA_PLAY_IMMEDIATELY,
|
|
MEDIA_IGNORE_SPEEK,
|
|
};
|
|
|
|
enum {
|
|
ECHO_CLOUD_MEDIA_STATE_STOP,
|
|
ECHO_CLOUD_MEDIA_STATE_START,
|
|
ECHO_CLOUD_MEDIA_STATE_PAUSE,
|
|
};
|
|
|
|
int echo_cloud_enc_http_start(struct echo_cloud_http_hdl *hdl, u8 voice_mode);
|
|
|
|
int echo_cloud_enc_http_send(struct echo_cloud_http_hdl *hdl, void *data, u32 data_len);
|
|
|
|
int echo_cloud_enc_http_close(struct echo_cloud_http_hdl *hdl);
|
|
|
|
int echo_cloud_msg_http_close(struct echo_cloud_http_hdl *hdl);
|
|
|
|
int echo_cloud_msg_http_req(struct echo_cloud_http_hdl *hdl, int cmd, json_object *cmd_data);
|
|
|
|
int echo_cloud_rcv_json_handler(void *priv, const char *rsp_data);
|
|
|
|
int echo_cloud_mqtt_init(struct echo_cloud_auth_parm *auth);
|
|
|
|
void echo_cloud_mqtt_uninit(void);
|
|
|
|
void JL_echo_cloud_wechat_speak_play(const char *url);
|
|
|
|
void JL_echo_cloud_media_speak_play(const char *url);
|
|
|
|
void JL_echo_cloud_media_audio_play(const char *url);
|
|
|
|
void JL_echo_cloud_media_audio_continue(const char *url);
|
|
|
|
void JL_echo_cloud_media_audio_pause(const char *url);
|
|
|
|
void JL_echo_cloud_upgrade_notify(int event, void *arg);
|
|
|
|
void JL_echo_cloud_volume_change_notify(int volume);
|
|
|
|
void JL_echo_cloud_wechat_speak_recv_notify(void);
|
|
|
|
void JL_echo_cloud_child_lock_change_notify(int value);
|
|
|
|
void JL_echo_cloud_light_change_notify(int value);
|
|
|
|
int get_app_music_playtime(void);
|
|
|
|
int echo_cloud_get_firmware_data(httpcli_ctx *ctx, const char *url, const char *version);
|
|
|
|
int check_echo_cloud_firmware_version(const char *url, const char *new_ver, const char *checksum);
|
|
|
|
const char *get_echo_cloud_firmware_version(void);
|
|
|
|
#endif
|