speaker.cxx
5.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/******************************************************************
* Author : tyh (tangyinghao@autelrobotics.cn)
* CreateTime : 2024/2/19
* Copyright (c) 2024 Shenzhen Autel Robotics Co., Ltd.
* File Desc :
*******************************************************************/
#include "uav_error.h"
#include "uav_widget.h"
#include "uav_logger.h"
#include "uav_register.h"
/* Private constants ---------------------------------------------------------*/
/* The speaker initialization parameters */
#define WIDGET_SPEAKER_DEFAULT_VOLUME (60)
/* Private values -------------------------------------------------------------*/
static T_UavWidgetSpeakerHandler s_speakerHandler = {0};
static T_UavWidgetSpeakerExHandler s_speakerExHandler = {0};
static T_UavWidgetSpeakerState s_speakerState = {UAV_WIDGET_SPEAKER_STATE_IDEL ,UAV_WIDGET_SPEAKER_WORK_MODE_TTS, UAV_WIDGET_SPEAKER_PLAY_MODE_SINGLE_PLAY, 0};
static T_UAVReturnCode UAV_WidgetSpeakerInit(void);
#include <string>
#include <thread>
#include <sys/time.h>
#include "uav_core.h"
#include "uav_platform.h"
#include "uav_sdk_app_info.h"
#include "uav_fc_subscription.h"
#include "uav_low_speed_data_channel.h"
void registThreadFunc(void);
int main(int argc, char *argv[])
{
T_AUserInfo usrInfo;
logger_init(std::string(argv[1]));
if(false == uav_sdk_app_info_init(&usrInfo)) {
LOG_ERROR("uav_sdk_app_info_init failed");
return -1;
}
UAV_Core_Init(&usrInfo);
UAV_Core_SetAlias("speaker");
// UAV_Uart_Init("/dev/pts/20",115200);
UAV_Network_Init(LOCALHOST_ETHERNET);
set_payload_type(6);
UAV_WidgetSpeakerInit();
LOG_INFO(" speaker init ");
std::thread registerThread(registThreadFunc);
registerThread.detach();
return UAV_Core_ApplicationStart();
}
void registThreadFunc(void)
{
int ret = 0;
//wait register success
if(false == wait_register_ready(100)){
LOG_ERROR("waitHandShakeRegister failed");
return;
}
//订阅Speaker消息,进行对应的speaker操作
ret =UAV_LowSpeedDataChannel_Init();
LOG_INFO(" channel init ret :{}", ret);
ret = UAV_Widget_RegSpeakerHandler(&s_speakerHandler);
LOG_INFO(" speaker reg ret :{}", ret);
ret = UAV_Widget_RegSpeakerExHandler(&s_speakerExHandler);
LOG_INFO(" speaker exreg ret :{}", ret);
LOG_INFO("end registThreadFunc");
}
// static void SetSpeakerState(E_UavWidgetSpeakerState speakerState)
// {
// }
static T_UAVReturnCode GetSpeakerState(T_UavWidgetSpeakerState *speakerState)
{
*speakerState = s_speakerState;
LOG_INFO(" speaker State: {} {} {} {}", (int)s_speakerState.state, (int)s_speakerState.workMode,
(int)s_speakerState.playMode, s_speakerState.volume );
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode SetWorkMode(E_UavWidgetSpeakerWorkMode workMode)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode SetPlayMode(E_UavWidgetSpeakerPlayMode playMode)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode StartPlay(void)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode StopPlay(void)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode SetVolume(uint8_t volume)
{
s_speakerState.volume = volume;
LOG_INFO("Set widget speaker volume: {}", volume);
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//static T_UAVReturnCode GetVolume(uint8_t *volume)
//{
// *volume = s_speakerState.volume;
// LOG_INFO("Get widget speaker volume: %d", *volume);
// return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
//}
static T_UAVReturnCode ReceiveTtsData(E_UavWidgetTransmitDataEvent event,
uint32_t offset, uint8_t *buf, uint16_t size)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode ReceiveAudioData(E_UavWidgetTransmitDataEvent event,
uint32_t offset, uint8_t *buf, uint16_t size)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode SpeakerQuery(T_UavWidgetSpeakerQuery *speakerQuery,T_UavWidgetSpeakerQueryRsp *speakerQueryRsp)
{
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_UAVReturnCode UAV_WidgetSpeakerInit(void)
{
T_UAVReturnCode returnCode;
// s_speakerHandler.SetSpeakerState = SetSpeakerState;
s_speakerHandler.GetSpeakerState = GetSpeakerState;
s_speakerHandler.SetWorkMode = SetWorkMode;
s_speakerHandler.StartPlay = StartPlay;
s_speakerHandler.StopPlay = StopPlay;
s_speakerHandler.SetPlayMode = SetPlayMode;
s_speakerHandler.SetVolume = SetVolume;
// s_speakerHandler.GetVolume = GetVolume;
s_speakerHandler.ReceiveTtsData = ReceiveTtsData;
s_speakerHandler.ReceiveVoiceData = ReceiveAudioData;
s_speakerExHandler.SpeakerControl = SpeakerControl;
s_speakerExHandler.SpeakerQuery = SpeakerQuery;
s_speakerState.state = UAV_WIDGET_SPEAKER_STATE_IDEL;
s_speakerState.workMode = UAV_WIDGET_SPEAKER_WORK_MODE_VOICE;
s_speakerState.playMode = UAV_WIDGET_SPEAKER_PLAY_MODE_SINGLE_PLAY;
returnCode = SetVolume(WIDGET_SPEAKER_DEFAULT_VOLUME);
if (returnCode != UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
LOG_ERROR("Set speaker volume error: 0x%08llX", returnCode);
return returnCode;
}
return UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}