正在显示
28 个修改的文件
包含
2368 行增加
和
1219 行删除
| @@ -163,7 +163,13 @@ | @@ -163,7 +163,13 @@ | ||
| 163 | "debuginfo.h": "c", | 163 | "debuginfo.h": "c", |
| 164 | "h3_ircut.h": "c", | 164 | "h3_ircut.h": "c", |
| 165 | "dji_high_speed_data_channel.h": "c", | 165 | "dji_high_speed_data_channel.h": "c", |
| 166 | - "psdk_ui.h": "c" | 166 | + "psdk_ui.h": "c", |
| 167 | + "jzsdk_widgetindex.h": "c", | ||
| 168 | + "psdk_ui_change.h": "c", | ||
| 169 | + "psdk_ui_value_menu.h": "c", | ||
| 170 | + "iflybak": "c", | ||
| 171 | + "iflybak2": "c", | ||
| 172 | + "ifybak3": "c" | ||
| 167 | }, | 173 | }, |
| 168 | "Codegeex.GenerationPreference": "automatic", | 174 | "Codegeex.GenerationPreference": "automatic", |
| 169 | "C_Cpp.dimInactiveRegions": false, | 175 | "C_Cpp.dimInactiveRegions": false, |
| 1 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 1 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| 2 | -#include <string.h> // 添加memcpy函数支持 | 2 | +#include <string.h> |
| 3 | +#include <pthread.h> // 添加线程互斥锁支持 | ||
| 3 | #include "JZring.h" | 4 | #include "JZring.h" |
| 4 | 5 | ||
| 5 | typedef struct T_JZring | 6 | typedef struct T_JZring |
| @@ -8,65 +9,68 @@ typedef struct T_JZring | @@ -8,65 +9,68 @@ typedef struct T_JZring | ||
| 8 | U32_t size; // 缓冲区总容量 | 9 | U32_t size; // 缓冲区总容量 |
| 9 | U32_t head; // 写入位置(下一个可写位置) | 10 | U32_t head; // 写入位置(下一个可写位置) |
| 10 | U32_t tail; // 读取位置(下一个可读位置) | 11 | U32_t tail; // 读取位置(下一个可读位置) |
| 11 | - U32_t count; // 当前数据量(可选改进) | 12 | + U32_t count; // 当前数据量 |
| 13 | + pthread_mutex_t mutex; // 互斥锁保护共享资源 | ||
| 12 | } T_JZring; | 14 | } T_JZring; |
| 13 | 15 | ||
| 14 | - | ||
| 15 | // 初始化环形缓冲区 | 16 | // 初始化环形缓冲区 |
| 16 | T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size) | 17 | T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size) |
| 17 | { | 18 | { |
| 18 | - if (!buffer || size == 0) | 19 | + if (!ring || !buffer || size == 0) |
| 19 | { | 20 | { |
| 20 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 21 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 21 | } | 22 | } |
| 22 | 23 | ||
| 23 | - //注册ring | ||
| 24 | T_JZring *r = (T_JZring*)malloc(sizeof(T_JZring)); | 24 | T_JZring *r = (T_JZring*)malloc(sizeof(T_JZring)); |
| 25 | if (!r) { | 25 | if (!r) { |
| 26 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 26 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | + // 初始化互斥锁 | ||
| 30 | + if (pthread_mutex_init(&r->mutex, NULL) != 0) { | ||
| 31 | + free(r); | ||
| 32 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 33 | + } | ||
| 34 | + | ||
| 29 | r->buffer = buffer; | 35 | r->buffer = buffer; |
| 30 | r->size = size; | 36 | r->size = size; |
| 31 | r->head = 0; | 37 | r->head = 0; |
| 32 | r->tail = 0; | 38 | r->tail = 0; |
| 33 | - r->count = 0; // 初始化数据计数 | 39 | + r->count = 0; |
| 34 | 40 | ||
| 35 | *ring = (T_JZringHandle)r; | 41 | *ring = (T_JZringHandle)r; |
| 36 | - | ||
| 37 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 42 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 38 | } | 43 | } |
| 39 | 44 | ||
| 40 | -// 写入数据到环形缓冲区 | ||
| 41 | -T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size) | 45 | +// 获取缓冲区总容量 |
| 46 | +T_JZsdkReturnCode JZring_GetSize(T_JZringHandle ring, U32_t *size) | ||
| 42 | { | 47 | { |
| 43 | - if (!ring || !data) { | 48 | + if (!ring || !size) { |
| 44 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 49 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 45 | } | 50 | } |
| 46 | - if (size == 0) { | ||
| 47 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 48 | - } | ||
| 49 | 51 | ||
| 50 | T_JZring *r = (T_JZring*)ring; | 52 | T_JZring *r = (T_JZring*)ring; |
| 51 | 53 | ||
| 52 | - // 检查可用空间 | ||
| 53 | - U32_t free_space = r->size - r->count; | ||
| 54 | - if (size > free_space) { | ||
| 55 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 56 | - } | 54 | + pthread_mutex_lock(&r->mutex); |
| 55 | + *size = r->size; | ||
| 56 | + pthread_mutex_unlock(&r->mutex); | ||
| 57 | + | ||
| 58 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 59 | +} | ||
| 57 | 60 | ||
| 58 | - // 分两段复制数据(处理回绕) | ||
| 59 | - U32_t first_chunk = r->size - r->head; | ||
| 60 | - if (first_chunk >= size) { | ||
| 61 | - memcpy(r->buffer + r->head, data, size); | ||
| 62 | - r->head = (r->head + size) % r->size; | ||
| 63 | - } else { | ||
| 64 | - memcpy(r->buffer + r->head, data, first_chunk); | ||
| 65 | - memcpy(r->buffer, data + first_chunk, size - first_chunk); | ||
| 66 | - r->head = size - first_chunk; | 61 | +// 获取当前数据量 |
| 62 | +T_JZsdkReturnCode JZring_GetDataCount(T_JZringHandle ring, U32_t *count) | ||
| 63 | +{ | ||
| 64 | + if (!ring || !count) { | ||
| 65 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 67 | } | 66 | } |
| 67 | + | ||
| 68 | + T_JZring *r = (T_JZring*)ring; | ||
| 69 | + | ||
| 70 | + pthread_mutex_lock(&r->mutex); | ||
| 71 | + *count = r->count; | ||
| 72 | + pthread_mutex_unlock(&r->mutex); | ||
| 68 | 73 | ||
| 69 | - r->count += size; // 更新数据计数 | ||
| 70 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 74 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 71 | } | 75 | } |
| 72 | 76 | ||
| @@ -80,61 +84,153 @@ T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t | @@ -80,61 +84,153 @@ T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t | ||
| 80 | T_JZring *r = (T_JZring*)ring; | 84 | T_JZring *r = (T_JZring*)ring; |
| 81 | *readSize = 0; | 85 | *readSize = 0; |
| 82 | 86 | ||
| 87 | + pthread_mutex_lock(&r->mutex); | ||
| 88 | + | ||
| 83 | if (r->count == 0 || size == 0) { | 89 | if (r->count == 0 || size == 0) { |
| 90 | + pthread_mutex_unlock(&r->mutex); | ||
| 84 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 91 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 85 | } | 92 | } |
| 86 | 93 | ||
| 87 | // 计算实际可读数量 | 94 | // 计算实际可读数量 |
| 88 | U32_t bytes_to_read = (size > r->count) ? r->count : size; | 95 | U32_t bytes_to_read = (size > r->count) ? r->count : size; |
| 96 | + *readSize = bytes_to_read; | ||
| 89 | 97 | ||
| 90 | - // 分两段复制数据(处理回绕) | ||
| 91 | - U32_t first_chunk = r->size - r->tail; | ||
| 92 | - if (first_chunk >= bytes_to_read) { | 98 | + // 计算连续可读空间(可能被尾部分割) |
| 99 | + U32_t contig = r->size - r->tail; | ||
| 100 | + if (bytes_to_read <= contig) { | ||
| 93 | memcpy(data, r->buffer + r->tail, bytes_to_read); | 101 | memcpy(data, r->buffer + r->tail, bytes_to_read); |
| 94 | - r->tail = (r->tail + bytes_to_read) % r->size; | ||
| 95 | } else { | 102 | } else { |
| 96 | - memcpy(data, r->buffer + r->tail, first_chunk); | ||
| 97 | - memcpy(data + first_chunk, r->buffer, bytes_to_read - first_chunk); | ||
| 98 | - r->tail = bytes_to_read - first_chunk; | 103 | + memcpy(data, r->buffer + r->tail, contig); |
| 104 | + memcpy(data + contig, r->buffer, bytes_to_read - contig); | ||
| 99 | } | 105 | } |
| 100 | 106 | ||
| 101 | - r->count -= bytes_to_read; // 更新数据计数 | ||
| 102 | - *readSize = bytes_to_read; | 107 | + // 更新读指针和数据计数 |
| 108 | + r->tail = (r->tail + bytes_to_read) % r->size; | ||
| 109 | + r->count -= bytes_to_read; | ||
| 110 | + | ||
| 111 | + pthread_mutex_unlock(&r->mutex); | ||
| 103 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 112 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 104 | } | 113 | } |
| 105 | 114 | ||
| 106 | -T_JZsdkReturnCode JZring_GetSize(T_JZringHandle ring, U32_t *size) | 115 | +// 写入数据到环形缓冲区 |
| 116 | +T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size) | ||
| 117 | +{ | ||
| 118 | + if (!ring || !data) { | ||
| 119 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + if (size == 0) { | ||
| 123 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + T_JZring *r = (T_JZring*)ring; | ||
| 127 | + | ||
| 128 | + pthread_mutex_lock(&r->mutex); | ||
| 129 | + | ||
| 130 | + // 直接检查可用空间 | ||
| 131 | + if (size > (r->size - r->count)) | ||
| 132 | + { | ||
| 133 | + pthread_mutex_unlock(&r->mutex); | ||
| 134 | + return JZ_ERROR_SYSTEM_MODULE_CODE_BUFFER_SIZE_NOT_ENOUGH; | ||
| 135 | + } | ||
| 136 | + | ||
| 137 | + // 计算连续可写空间(可能被尾部分割) | ||
| 138 | + U32_t contig = r->size - r->head; | ||
| 139 | + if (size <= contig) { | ||
| 140 | + memcpy(r->buffer + r->head, data, size); | ||
| 141 | + } else { | ||
| 142 | + memcpy(r->buffer + r->head, data, contig); | ||
| 143 | + memcpy(r->buffer, data + contig, size - contig); | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + // 更新写指针和数据计数 | ||
| 147 | + r->head = (r->head + size) % r->size; | ||
| 148 | + r->count += size; | ||
| 149 | + | ||
| 150 | + pthread_mutex_unlock(&r->mutex); | ||
| 151 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 152 | +} | ||
| 153 | + | ||
| 154 | +// 获取空闲空间 | ||
| 155 | +T_JZsdkReturnCode JZring_GetFreeSpace(T_JZringHandle ring, U32_t *size) | ||
| 107 | { | 156 | { |
| 108 | - T_JZring *ringHandle = (T_JZring*)ring; | 157 | + if (!ring || !size) { |
| 158 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 159 | + } | ||
| 109 | 160 | ||
| 161 | + T_JZring *r = (T_JZring*)ring; | ||
| 162 | + | ||
| 163 | + pthread_mutex_lock(&r->mutex); | ||
| 164 | + *size = r->size - r->count; | ||
| 165 | + pthread_mutex_unlock(&r->mutex); | ||
| 166 | + | ||
| 110 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 167 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 111 | } | 168 | } |
| 112 | 169 | ||
| 113 | -T_JZsdkReturnCode JZring_GetFreeSize(T_JZringHandle ring, U32_t *size) | 170 | +// 检查缓冲区是否为空 |
| 171 | +T_JZsdkReturnCode JZring_IsEmpty(T_JZringHandle ring, bool *isEmpty) | ||
| 114 | { | 172 | { |
| 115 | - T_JZring *ringHandle = (T_JZring*)ring; | 173 | + if (!ring || !isEmpty) { |
| 174 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 175 | + } | ||
| 116 | 176 | ||
| 177 | + T_JZring *r = (T_JZring*)ring; | ||
| 178 | + | ||
| 179 | + pthread_mutex_lock(&r->mutex); | ||
| 180 | + *isEmpty = (r->count == 0); | ||
| 181 | + pthread_mutex_unlock(&r->mutex); | ||
| 182 | + | ||
| 117 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 183 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 118 | } | 184 | } |
| 119 | 185 | ||
| 120 | -T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring) | 186 | +// 检查缓冲区是否已满 |
| 187 | +T_JZsdkReturnCode JZring_IsFull(T_JZringHandle ring, bool *isFull) | ||
| 121 | { | 188 | { |
| 122 | - T_JZring *ringHandle = (T_JZring*)ring; | 189 | + if (!ring || !isFull) { |
| 190 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 191 | + } | ||
| 123 | 192 | ||
| 124 | - ringHandle->head = 0; | ||
| 125 | - ringHandle->tail = 0; | 193 | + T_JZring *r = (T_JZring*)ring; |
| 194 | + | ||
| 195 | + pthread_mutex_lock(&r->mutex); | ||
| 196 | + *isFull = (r->count == r->size); | ||
| 197 | + pthread_mutex_unlock(&r->mutex); | ||
| 198 | + | ||
| 199 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 200 | +} | ||
| 126 | 201 | ||
| 202 | +// 重置环形缓冲区 | ||
| 203 | +T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring) | ||
| 204 | +{ | ||
| 205 | + if (!ring) { | ||
| 206 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + T_JZring *r = (T_JZring*)ring; | ||
| 210 | + | ||
| 211 | + pthread_mutex_lock(&r->mutex); | ||
| 212 | + r->head = 0; | ||
| 213 | + r->tail = 0; | ||
| 214 | + r->count = 0; | ||
| 215 | + pthread_mutex_unlock(&r->mutex); | ||
| 216 | + | ||
| 127 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 217 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 128 | } | 218 | } |
| 129 | 219 | ||
| 220 | +// 反初始化环形缓冲区 | ||
| 130 | T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring) | 221 | T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring) |
| 131 | { | 222 | { |
| 132 | - T_JZring *ringHandle = (T_JZring*)ring; | ||
| 133 | - | ||
| 134 | - ringHandle->buffer = NULL; | ||
| 135 | - ringHandle->size = 0; | ||
| 136 | - ringHandle->head = 0; | ||
| 137 | - ringHandle->tail = 0; | ||
| 138 | - | 223 | + if (!ring) { |
| 224 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 225 | + } | ||
| 226 | + | ||
| 227 | + T_JZring *r = (T_JZring*)ring; | ||
| 228 | + | ||
| 229 | + // 销毁互斥锁 | ||
| 230 | + pthread_mutex_destroy(&r->mutex); | ||
| 231 | + | ||
| 232 | + // 释放管理结构体 | ||
| 233 | + free(r); | ||
| 234 | + | ||
| 139 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 235 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 140 | } | 236 | } |
| @@ -28,6 +28,10 @@ T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size); | @@ -28,6 +28,10 @@ T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size); | ||
| 28 | T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size); | 28 | T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size); |
| 29 | T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t *readSize); | 29 | T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t *readSize); |
| 30 | 30 | ||
| 31 | +T_JZsdkReturnCode JZring_GetDataCount(T_JZringHandle ring, U32_t *count); | ||
| 32 | +T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring); | ||
| 33 | +T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring); | ||
| 34 | + | ||
| 31 | #ifdef __cplusplus | 35 | #ifdef __cplusplus |
| 32 | } | 36 | } |
| 33 | #endif | 37 | #endif |
| @@ -24,9 +24,10 @@ typedef enum JZsdk_Widget_Control | @@ -24,9 +24,10 @@ typedef enum JZsdk_Widget_Control | ||
| 24 | JZSDK_WIDGET_LASTSONG = 0x0000, // 控件上一曲 | 24 | JZSDK_WIDGET_LASTSONG = 0x0000, // 控件上一曲 |
| 25 | JZSDK_WIDGET_NEXTSONG = 0x0001, // 控件下一曲 | 25 | JZSDK_WIDGET_NEXTSONG = 0x0001, // 控件下一曲 |
| 26 | JZSDK_WIDGET_PLAYANDSTOP = 0x0002, // 控件播放暂停 | 26 | JZSDK_WIDGET_PLAYANDSTOP = 0x0002, // 控件播放暂停 |
| 27 | - JZSDK_WIDGET_VOLUME = 0x0003, // 控件音量 | ||
| 28 | - | ||
| 29 | - JZSDK_WIDGET_SIDE_LASER_MODE = 0x0020, | 27 | + JZSDK_WIDGET_VOLUME = 0x003, // 控件音量 |
| 28 | + JZSDK_WIDGET_TTS_SPEED = 0x0004, // 控件tts速度 | ||
| 29 | + JZSDK_WIDGET_TTS_TONE = 0x0005, // 控件tts音色 | ||
| 30 | + JZSDK_WIDGET_LOOP_PLAY = 0x0010, // 控件循环播放 | ||
| 30 | 31 | ||
| 31 | JZSDK_WIDGET_VIDEOPUSH_INDEX = 0x0021, //切换视频流 | 32 | JZSDK_WIDGET_VIDEOPUSH_INDEX = 0x0021, //切换视频流 |
| 32 | JZSDK_WIDGET_TEMP_MEASUREMENT_MODE = 0x0022, //测温 | 33 | JZSDK_WIDGET_TEMP_MEASUREMENT_MODE = 0x0022, //测温 |
| @@ -55,8 +56,12 @@ typedef enum JZsdk_Widget_Control | @@ -55,8 +56,12 @@ typedef enum JZsdk_Widget_Control | ||
| 55 | JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION = 0x0039, //气体增强纠正低温校准 | 56 | JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION = 0x0039, //气体增强纠正低温校准 |
| 56 | 57 | ||
| 57 | 58 | ||
| 58 | - | 59 | + JZSDK_WIDGET_WARNLIGHT_COLOR_1 = 0x0040, //警告灯颜色1 |
| 60 | + JZSDK_WIDGET_WARNLIGHT_COLOR_2 = 0x0041, //警告灯颜色2 | ||
| 59 | 61 | ||
| 62 | + JZSDK_WIDGET_WARNLIGHT_MODE = 0x0042, //警告灯模式 | ||
| 63 | + | ||
| 64 | + JZSDK_WIDGET_SIDE_LASER_MODE = 0x0050, //侧射激光模式 | ||
| 60 | 65 | ||
| 61 | }JZsdk_Widget_Control; | 66 | }JZsdk_Widget_Control; |
| 62 | 67 |
| @@ -29,6 +29,7 @@ typedef enum { | @@ -29,6 +29,7 @@ typedef enum { | ||
| 29 | JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败 | 29 | JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败 |
| 30 | JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY = 0x0005, //忙错误 | 30 | JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY = 0x0005, //忙错误 |
| 31 | JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR = 0x0006, //校验码错误 | 31 | JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR = 0x0006, //校验码错误 |
| 32 | + JZ_ERROR_SYSTEM_MODULE_CODE_BUFFER_SIZE_NOT_ENOUGH = 0x0007, //缓冲区大小不足 | ||
| 32 | } JZ_SYSTEM_Code; | 33 | } JZ_SYSTEM_Code; |
| 33 | 34 | ||
| 34 | typedef enum { | 35 | typedef enum { |
| @@ -209,7 +209,7 @@ static T_JZsdkReturnCode JZ_T40_BaseParamSet(void) | @@ -209,7 +209,7 @@ static T_JZsdkReturnCode JZ_T40_BaseParamSet(void) | ||
| 209 | //测试部分 | 209 | //测试部分 |
| 210 | 210 | ||
| 211 | //1、将总功率设置为无限制 | 211 | //1、将总功率设置为无限制 |
| 212 | - //HalSend_type1Send_SearchLight_SetLumenPowerLimit(UART_DEV_2, 0x00, 0x64, 0x20, 0x00); | 212 | + HalSend_type1Send_SearchLight_SetLumenPowerLimit(UART_DEV_2, 0x00, 0x64, 0x20, 0x00); |
| 213 | 213 | ||
| 214 | } | 214 | } |
| 215 | 215 | ||
| @@ -251,8 +251,8 @@ T_JZsdkReturnCode JZ_T40_init(int mode) | @@ -251,8 +251,8 @@ T_JZsdkReturnCode JZ_T40_init(int mode) | ||
| 251 | JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2); | 251 | JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2); |
| 252 | 252 | ||
| 253 | //4G初始化 | 253 | //4G初始化 |
| 254 | - int value[1] = {COMM_4G_UART_BITRATE}; | ||
| 255 | - JZsdk_HalPort_Init(UART_4G, value); | 254 | + // int value[1] = {COMM_4G_UART_BITRATE}; |
| 255 | + // JZsdk_HalPort_Init(UART_4G, value); | ||
| 256 | 256 | ||
| 257 | //子设备连接 | 257 | //子设备连接 |
| 258 | JZ_T40_SubDevice_Init(); | 258 | JZ_T40_SubDevice_Init(); |
| @@ -10,20 +10,20 @@ | @@ -10,20 +10,20 @@ | ||
| 10 | #define DEVICE_VERSION JZ_T40 | 10 | #define DEVICE_VERSION JZ_T40 |
| 11 | 11 | ||
| 12 | //禁止修改行 选择是串口程序 还是 psdk程序 | 12 | //禁止修改行 选择是串口程序 还是 psdk程序 |
| 13 | -#define APP_VERSION APP_UART | 13 | +#define APP_VERSION APP_PSDK |
| 14 | 14 | ||
| 15 | //禁止修改行 板子型号 | 15 | //禁止修改行 板子型号 |
| 16 | #define PLATFORM_VERSION PLATFORM_V3S | 16 | #define PLATFORM_VERSION PLATFORM_V3S |
| 17 | 17 | ||
| 18 | //禁止修改行 串口连接程序的软件版本号 | 18 | //禁止修改行 串口连接程序的软件版本号 |
| 19 | #define MAJOR_VERSION_TEN_POSITION 0 | 19 | #define MAJOR_VERSION_TEN_POSITION 0 |
| 20 | -#define MAJOR_VERSION_ONE_POSITION 0 | 20 | +#define MAJOR_VERSION_ONE_POSITION 1 |
| 21 | #define MINOR_VERSION_TEN_POSITION 0 | 21 | #define MINOR_VERSION_TEN_POSITION 0 |
| 22 | -#define MINOR_VERSION_ONE_POSITION 0 | ||
| 23 | -#define MODIFY_VERSION_TEN_POSITION 0 | 22 | +#define MINOR_VERSION_ONE_POSITION 3 |
| 23 | +#define MODIFY_VERSION_TEN_POSITION 1 | ||
| 24 | #define MODIFY_VERSION_ONE_POSITION 2 | 24 | #define MODIFY_VERSION_ONE_POSITION 2 |
| 25 | -#define DEBUG_VERSION_TEN_POSITION 2 | ||
| 26 | -#define DEBUG_VERSION_ONE_POSITION 2 | 25 | +#define DEBUG_VERSION_TEN_POSITION 0 |
| 26 | +#define DEBUG_VERSION_ONE_POSITION 0 | ||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | 29 |
| @@ -478,7 +478,7 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_Limit_transmission(int Port, char | @@ -478,7 +478,7 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_Limit_transmission(int Port, char | ||
| 478 | } | 478 | } |
| 479 | 479 | ||
| 480 | HalRecvDataLen += DataLen; | 480 | HalRecvDataLen += DataLen; |
| 481 | - JZSDK_LOG_DEBUG("%s,MP2实时喊话定长制传输中 长度:%d 总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, HalRecvDataLen); | 481 | + JZSDK_LOG_INFO("%s,MP2实时喊话定长制传输中 长度:%d 总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, HalRecvDataLen); |
| 482 | 482 | ||
| 483 | //传输数据接口 | 483 | //传输数据接口 |
| 484 | #ifdef MEGAPHONE_CONFIG_STATUS_ON | 484 | #ifdef MEGAPHONE_CONFIG_STATUS_ON |
| @@ -1994,7 +1994,7 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_LimitTransmission(int Port, char *ge | @@ -1994,7 +1994,7 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_LimitTransmission(int Port, char *ge | ||
| 1994 | //2、记录已加载的长度 | 1994 | //2、记录已加载的长度 |
| 1995 | TTS_RecvBufferLen = TTS_RecvBufferLen + DataLen; | 1995 | TTS_RecvBufferLen = TTS_RecvBufferLen + DataLen; |
| 1996 | 1996 | ||
| 1997 | - JZSDK_LOG_DEBUG("%s,tts定长传输中, 长度:%d 总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, TTS_RecvBufferLen); | 1997 | + JZSDK_LOG_INFO("%s,tts定长传输中, 长度:%d 总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, TTS_RecvBufferLen); |
| 1998 | } | 1998 | } |
| 1999 | else | 1999 | else |
| 2000 | { | 2000 | { |
| @@ -2563,7 +2563,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, | @@ -2563,7 +2563,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, | ||
| 2563 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 2563 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
| 2564 | } | 2564 | } |
| 2565 | 2565 | ||
| 2566 | - JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen); | 2566 | + JZSDK_LOG_INFO("%s,传输opus定长语音传输中 长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen); |
| 2567 | 2567 | ||
| 2568 | //传输数据接口 | 2568 | //传输数据接口 |
| 2569 | #ifdef MEGAPHONE_CONFIG_STATUS_ON | 2569 | #ifdef MEGAPHONE_CONFIG_STATUS_ON |
| @@ -4,11 +4,15 @@ | @@ -4,11 +4,15 @@ | ||
| 4 | #include <atomic> | 4 | #include <atomic> |
| 5 | #include <unistd.h> | 5 | #include <unistd.h> |
| 6 | #include <string> | 6 | #include <string> |
| 7 | +#include <thread> | ||
| 8 | +#include <mutex> | ||
| 9 | +#include <condition_variable> | ||
| 7 | 10 | ||
| 8 | #include "JZsdkLib.h" | 11 | #include "JZsdkLib.h" |
| 9 | #include "version_choose.h" | 12 | #include "version_choose.h" |
| 13 | +#include "JZsdk_base/JZring/JZring.h" | ||
| 10 | 14 | ||
| 11 | -#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON | 15 | +#if 1 |
| 12 | 16 | ||
| 13 | #include "aikit_biz_api.h" | 17 | #include "aikit_biz_api.h" |
| 14 | #include "aikit_constant.h" | 18 | #include "aikit_constant.h" |
| @@ -18,71 +22,137 @@ | @@ -18,71 +22,137 @@ | ||
| 18 | #include "../../Megaphone.h" | 22 | #include "../../Megaphone.h" |
| 19 | #include "iflytek_tts.h" | 23 | #include "iflytek_tts.h" |
| 20 | 24 | ||
| 21 | - | ||
| 22 | using namespace std; | 25 | using namespace std; |
| 23 | using namespace AIKIT; | 26 | using namespace AIKIT; |
| 24 | 27 | ||
| 25 | static std::atomic_bool ttsFinished(false); | 28 | static std::atomic_bool ttsFinished(false); |
| 29 | +static std::atomic_bool g_playThreadRunning(false); | ||
| 26 | static const char *ABILITY = "e2e44feff"; | 30 | static const char *ABILITY = "e2e44feff"; |
| 27 | -static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄 | 31 | +static AIKIT_HANDLE *g_AikitHandle = nullptr; // 合成句柄 |
| 28 | 32 | ||
| 29 | static int IflytekLib_2_StopTts(); | 33 | static int IflytekLib_2_StopTts(); |
| 30 | 34 | ||
| 35 | +#define IFLYTEK_RING_BUF_SIZE (1024 * 100) // 100KB缓冲区 | ||
| 36 | +static T_JZringHandle g_ringHandle = nullptr; | ||
| 37 | +static char *g_ringBuf = nullptr; | ||
| 31 | 38 | ||
| 39 | +// 同步机制 | ||
| 40 | +static std::mutex g_mutex; | ||
| 41 | +static std::condition_variable g_cv; | ||
| 32 | 42 | ||
| 33 | -void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | 43 | +// 播放线程函数 |
| 44 | +void PlaybackThreadFunc() | ||
| 34 | { | 45 | { |
| 35 | - //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件 | ||
| 36 | - if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) | 46 | + U8_t buffer[2048]; // 每次读取2KB |
| 47 | + U32_t readSize = 0; | ||
| 48 | + T_JZsdkReturnCode ret; | ||
| 49 | + | ||
| 50 | + g_playThreadRunning = true; | ||
| 51 | + | ||
| 52 | + while (g_playThreadRunning) | ||
| 37 | { | 53 | { |
| 54 | + // 等待有数据可读 | ||
| 55 | + { | ||
| 56 | + std::unique_lock<std::mutex> lock(g_mutex); | ||
| 57 | + U32_t dataCount = 0; | ||
| 58 | + JZring_GetDataCount(g_ringHandle, &dataCount); | ||
| 59 | + | ||
| 60 | + if (dataCount == 0) { | ||
| 61 | + // 等待最多100ms或通知 | ||
| 62 | + g_cv.wait_for(lock, std::chrono::milliseconds(100)); | ||
| 63 | + continue; | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + JZSDK_LOG_DEBUG("有数据可读"); | ||
| 68 | + | ||
| 69 | + // 从环形缓冲区读取数据 | ||
| 70 | + ret = JZring_Read(g_ringHandle, buffer, sizeof(buffer), &readSize); | ||
| 71 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS || readSize == 0) { | ||
| 72 | + usleep(10000); // 10ms | ||
| 73 | + continue; | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + | ||
| 78 | + // 发送到音频播放器 | ||
| 79 | + AudioDeal_PcmDataInput_TextSteam(16000, buffer, readSize); | ||
| 80 | + | ||
| 81 | + // 检查是否需要停止播放 | ||
| 82 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 83 | + break; | ||
| 84 | + } | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + g_playThreadRunning = false; | ||
| 88 | +} | ||
| 89 | + | ||
| 90 | +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | ||
| 91 | +{ | ||
| 92 | + // 检测数据生成标志位是否有关闭 | ||
| 93 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 38 | IflytekLib_2_StopTts(); | 94 | IflytekLib_2_StopTts(); |
| 39 | return; | 95 | return; |
| 40 | } | 96 | } |
| 41 | 97 | ||
| 42 | - //如果存在数据,则播放 | ||
| 43 | - if (output->node->value) | ||
| 44 | - { | ||
| 45 | - //生产的文本数据 output->node->value | ||
| 46 | - //生产的数据长度 output->node->len | ||
| 47 | - //char类型 | ||
| 48 | - | ||
| 49 | - //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 50 | - printf("生产了数据%d\n", output->node->len); | ||
| 51 | - | ||
| 52 | - //将该数据发送到alsa播放器 | ||
| 53 | - AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len); | 98 | + if (output->node->value) { |
| 99 | + JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 100 | + | ||
| 101 | + // 写入环形缓冲区 | ||
| 102 | + T_JZsdkReturnCode ret; | ||
| 103 | + U32_t written = 0; | ||
| 104 | + | ||
| 105 | + while (written < static_cast<U32_t>(output->node->len)) { | ||
| 106 | + U32_t chunkSize = std::min(static_cast<U32_t>(output->node->len) - written, | ||
| 107 | + static_cast<U32_t>(4096)); | ||
| 108 | + | ||
| 109 | + ret = JZring_Write(g_ringHandle, | ||
| 110 | + reinterpret_cast<U8_t*>(output->node->value) + written, | ||
| 111 | + chunkSize); | ||
| 112 | + | ||
| 113 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 114 | + JZSDK_LOG_ERROR("写入环形缓冲区失败: %d", ret); | ||
| 115 | + break; | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + written += chunkSize; | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + // 通知播放线程有新数据 | ||
| 122 | + g_cv.notify_one(); | ||
| 54 | } | 123 | } |
| 55 | - | ||
| 56 | - | ||
| 57 | } | 124 | } |
| 58 | 125 | ||
| 59 | void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { | 126 | void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { |
| 60 | if (eventType == AIKIT_Event_End) { | 127 | if (eventType == AIKIT_Event_End) { |
| 61 | ttsFinished = true; | 128 | ttsFinished = true; |
| 62 | - | ||
| 63 | JZSDK_LOG_INFO("合成完成"); | 129 | JZSDK_LOG_INFO("合成完成"); |
| 130 | + | ||
| 131 | + // 通知播放线程所有数据已生成 | ||
| 132 | + g_cv.notify_one(); | ||
| 64 | } | 133 | } |
| 65 | } | 134 | } |
| 66 | 135 | ||
| 67 | void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { | 136 | void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { |
| 68 | - printf("OnError:%d\n", err); | ||
| 69 | - | ||
| 70 | - //报错 | 137 | + JZSDK_LOG_ERROR("TTS错误: %d, %s", err, desc); |
| 138 | + IflytekLib_2_StopTts(); | ||
| 71 | } | 139 | } |
| 72 | 140 | ||
| 73 | int IflytekLib_2_TextToTts(int language, | 141 | int IflytekLib_2_TextToTts(int language, |
| 74 | - const char *TtsRole, | ||
| 75 | - const char *text, int speed, int volume) | 142 | + const char *TtsRole, |
| 143 | + const char *text, int speed, int volume) | ||
| 76 | { | 144 | { |
| 77 | - | ||
| 78 | AIKIT_ParamBuilder* paramBuilder = nullptr; | 145 | AIKIT_ParamBuilder* paramBuilder = nullptr; |
| 79 | AIKIT_DataBuilder* dataBuilder = nullptr; | 146 | AIKIT_DataBuilder* dataBuilder = nullptr; |
| 80 | AiText* aiText_raw = nullptr; | 147 | AiText* aiText_raw = nullptr; |
| 81 | - | 148 | + int ret = 0; |
| 82 | 149 | ||
| 83 | // 重置完成标志 | 150 | // 重置完成标志 |
| 84 | ttsFinished = false; | 151 | ttsFinished = false; |
| 85 | - | 152 | + |
| 153 | + // 重置环形缓冲区 | ||
| 154 | + JZring_Reset(g_ringHandle); | ||
| 155 | + | ||
| 86 | paramBuilder = AIKIT_ParamBuilder::create(); | 156 | paramBuilder = AIKIT_ParamBuilder::create(); |
| 87 | paramBuilder->clear(); | 157 | paramBuilder->clear(); |
| 88 | // 设置发音人 | 158 | // 设置发音人 |
| @@ -92,66 +162,67 @@ int IflytekLib_2_TextToTts(int language, | @@ -92,66 +162,67 @@ int IflytekLib_2_TextToTts(int language, | ||
| 92 | paramBuilder->param("language", language); | 162 | paramBuilder->param("language", language); |
| 93 | // 设置文本编码 | 163 | // 设置文本编码 |
| 94 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); | 164 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); |
| 165 | + // 音量 | ||
| 166 | + paramBuilder->param("volume", volume); | ||
| 167 | + // 语速 | ||
| 168 | + paramBuilder->param("speed", speed); | ||
| 95 | 169 | ||
| 96 | - //语速 | ||
| 97 | - //paramBuilder->param("speed",speed); //可选参数,默认为0 | ||
| 98 | - | ||
| 99 | - //音调 | ||
| 100 | - //paramBuilder->param("pitch",100); //可选参数,默认为0 | ||
| 101 | - | ||
| 102 | - //声音 | ||
| 103 | - //paramBuilder->param("volume",100);//可选参数,默认为0 | ||
| 104 | - | ||
| 105 | - //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language); | 170 | + JZSDK_LOG_DEBUG("TTS Role:%s, Text:%s, language:%d", TtsRole, text, language); |
| 106 | 171 | ||
| 107 | - int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); | 172 | + ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); |
| 108 | if(ret != 0) { | 173 | if(ret != 0) { |
| 109 | - printf("AIKIT_Start failed: %d\n", ret); | 174 | + JZSDK_LOG_ERROR("AIKIT_Start failed: %d", ret); |
| 110 | goto exit; | 175 | goto exit; |
| 111 | } | 176 | } |
| 112 | 177 | ||
| 113 | dataBuilder = AIKIT_DataBuilder::create(); | 178 | dataBuilder = AIKIT_DataBuilder::create(); |
| 114 | dataBuilder->clear(); | 179 | dataBuilder->clear(); |
| 115 | - //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid(); | ||
| 116 | - aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid(); | 180 | + aiText_raw = AiText::get("text")->data(text, strlen(text))->once()->valid(); |
| 117 | dataBuilder->payload(aiText_raw); | 181 | dataBuilder->payload(aiText_raw); |
| 118 | 182 | ||
| 119 | ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); | 183 | ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); |
| 120 | if(ret != 0) { | 184 | if(ret != 0) { |
| 121 | - printf("AIKIT_Write failed: %d\n", ret); | 185 | + JZSDK_LOG_ERROR("AIKIT_Write failed: %d", ret); |
| 122 | goto exit; | 186 | goto exit; |
| 123 | } | 187 | } |
| 124 | 188 | ||
| 125 | - // 等待合成完成 | 189 | + // 等待合成完成或停止信号 |
| 126 | while(!ttsFinished) { | 190 | while(!ttsFinished) { |
| 127 | - usleep(1000); | 191 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { |
| 192 | + break; | ||
| 193 | + } | ||
| 194 | + usleep(10000); // 10ms | ||
| 128 | } | 195 | } |
| 129 | 196 | ||
| 130 | - //JZSDK_LOG_INFO("合成完成"); | ||
| 131 | - | 197 | + // 结束合成 |
| 132 | ret = AIKIT_End(g_AikitHandle); | 198 | ret = AIKIT_End(g_AikitHandle); |
| 199 | + g_AikitHandle = nullptr; | ||
| 133 | 200 | ||
| 134 | -exit: | 201 | +exit: |
| 135 | if(paramBuilder != nullptr) { | 202 | if(paramBuilder != nullptr) { |
| 136 | delete paramBuilder; | 203 | delete paramBuilder; |
| 137 | } | 204 | } |
| 138 | if(dataBuilder != nullptr) { | 205 | if(dataBuilder != nullptr) { |
| 139 | delete dataBuilder; | 206 | delete dataBuilder; |
| 140 | } | 207 | } |
| 208 | + | ||
| 209 | + return ret; | ||
| 141 | } | 210 | } |
| 142 | 211 | ||
| 143 | - | ||
| 144 | - | ||
| 145 | - | ||
| 146 | - | ||
| 147 | - | ||
| 148 | - | ||
| 149 | - | ||
| 150 | - | ||
| 151 | - | ||
| 152 | - | ||
| 153 | int IflytekLib_2_Init() | 212 | int IflytekLib_2_Init() |
| 154 | { | 213 | { |
| 214 | + // 初始化环形缓冲区 | ||
| 215 | + g_ringBuf = new char[IFLYTEK_RING_BUF_SIZE]; | ||
| 216 | + if (JZring_Init(&g_ringHandle, reinterpret_cast<U8_t*>(g_ringBuf), IFLYTEK_RING_BUF_SIZE) | ||
| 217 | + != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 218 | + JZSDK_LOG_ERROR("环形缓冲区初始化失败"); | ||
| 219 | + return -1; | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + // 启动播放线程 | ||
| 223 | + std::thread(PlaybackThreadFunc).detach(); | ||
| 224 | + | ||
| 225 | + // 初始化TTS SDK | ||
| 155 | AIKIT_Configurator::builder() | 226 | AIKIT_Configurator::builder() |
| 156 | .app() | 227 | .app() |
| 157 | .appID("03857dfd") | 228 | .appID("03857dfd") |
| @@ -166,7 +237,7 @@ int IflytekLib_2_Init() | @@ -166,7 +237,7 @@ int IflytekLib_2_Init() | ||
| 166 | 237 | ||
| 167 | int ret = AIKIT_Init(); | 238 | int ret = AIKIT_Init(); |
| 168 | if(ret != 0) { | 239 | if(ret != 0) { |
| 169 | - printf("AIKIT_Init failed: %d\n", ret); | 240 | + JZSDK_LOG_ERROR("AIKIT_Init failed: %d", ret); |
| 170 | return -1; | 241 | return -1; |
| 171 | } | 242 | } |
| 172 | 243 | ||
| @@ -178,18 +249,49 @@ int IflytekLib_2_Init() | @@ -178,18 +249,49 @@ int IflytekLib_2_Init() | ||
| 178 | 249 | ||
| 179 | int IflytekLib_2_UnInit() | 250 | int IflytekLib_2_UnInit() |
| 180 | { | 251 | { |
| 252 | + // 停止播放线程 | ||
| 253 | + g_playThreadRunning = false; | ||
| 254 | + g_cv.notify_one(); | ||
| 255 | + | ||
| 256 | + // 等待播放线程退出 | ||
| 257 | + int waitCount = 0; | ||
| 258 | + while (g_playThreadRunning && waitCount++ < 50) { | ||
| 259 | + usleep(100000); // 100ms | ||
| 260 | + } | ||
| 261 | + | ||
| 262 | + // 反初始化TTS SDK | ||
| 263 | + if (g_AikitHandle) { | ||
| 264 | + AIKIT_End(g_AikitHandle); | ||
| 265 | + g_AikitHandle = nullptr; | ||
| 266 | + } | ||
| 267 | + | ||
| 181 | AIKIT_UnInit(); | 268 | AIKIT_UnInit(); |
| 269 | + | ||
| 270 | + // 释放环形缓冲区 | ||
| 271 | + if (g_ringHandle) { | ||
| 272 | + JZring_DeInit(g_ringHandle); | ||
| 273 | + g_ringHandle = nullptr; | ||
| 274 | + } | ||
| 275 | + | ||
| 276 | + if (g_ringBuf) { | ||
| 277 | + delete[] g_ringBuf; | ||
| 278 | + g_ringBuf = nullptr; | ||
| 279 | + } | ||
| 280 | + | ||
| 182 | return 0; | 281 | return 0; |
| 183 | } | 282 | } |
| 184 | 283 | ||
| 185 | static int IflytekLib_2_StopTts() | 284 | static int IflytekLib_2_StopTts() |
| 186 | { | 285 | { |
| 187 | - AIKIT_OutputEvent eventData = {}; | ||
| 188 | - if (g_AikitHandle != nullptr) | ||
| 189 | - { | ||
| 190 | - OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData); | 286 | + if (g_AikitHandle) { |
| 287 | + AIKIT_End(g_AikitHandle); | ||
| 288 | + g_AikitHandle = nullptr; | ||
| 289 | + ttsFinished = true; | ||
| 290 | + JZSDK_LOG_INFO("TTS合成已停止"); | ||
| 191 | } | 291 | } |
| 192 | 292 | ||
| 293 | + // 通知播放线程 | ||
| 294 | + g_cv.notify_one(); | ||
| 193 | return 0; | 295 | return 0; |
| 194 | } | 296 | } |
| 195 | 297 |
| @@ -110,7 +110,7 @@ int IflytekLib_2_TextToTts(int language, | @@ -110,7 +110,7 @@ int IflytekLib_2_TextToTts(int language, | ||
| 110 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); | 110 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); |
| 111 | 111 | ||
| 112 | //语速 | 112 | //语速 |
| 113 | - //paramBuilder->param("speed",speed); //可选参数,默认为0 | 113 | + paramBuilder->param("speed",speed); //可选参数,默认为0 |
| 114 | 114 | ||
| 115 | //音调 | 115 | //音调 |
| 116 | //paramBuilder->param("pitch",100); //可选参数,默认为0 | 116 | //paramBuilder->param("pitch",100); //可选参数,默认为0 |
| @@ -4,11 +4,15 @@ | @@ -4,11 +4,15 @@ | ||
| 4 | #include <atomic> | 4 | #include <atomic> |
| 5 | #include <unistd.h> | 5 | #include <unistd.h> |
| 6 | #include <string> | 6 | #include <string> |
| 7 | +#include <thread> | ||
| 8 | +#include <mutex> | ||
| 9 | +#include <condition_variable> | ||
| 7 | 10 | ||
| 8 | #include "JZsdkLib.h" | 11 | #include "JZsdkLib.h" |
| 9 | #include "version_choose.h" | 12 | #include "version_choose.h" |
| 13 | +#include "JZsdk_base/JZring/JZring.h" | ||
| 10 | 14 | ||
| 11 | -#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON | 15 | +#if 1 |
| 12 | 16 | ||
| 13 | #include "aikit_biz_api.h" | 17 | #include "aikit_biz_api.h" |
| 14 | #include "aikit_constant.h" | 18 | #include "aikit_constant.h" |
| @@ -18,87 +22,146 @@ | @@ -18,87 +22,146 @@ | ||
| 18 | #include "../../Megaphone.h" | 22 | #include "../../Megaphone.h" |
| 19 | #include "iflytek_tts.h" | 23 | #include "iflytek_tts.h" |
| 20 | 24 | ||
| 21 | - | ||
| 22 | using namespace std; | 25 | using namespace std; |
| 23 | using namespace AIKIT; | 26 | using namespace AIKIT; |
| 24 | 27 | ||
| 25 | static std::atomic_bool ttsFinished(false); | 28 | static std::atomic_bool ttsFinished(false); |
| 29 | +static std::atomic_bool g_playThreadRunning(false); | ||
| 26 | static const char *ABILITY = "e2e44feff"; | 30 | static const char *ABILITY = "e2e44feff"; |
| 27 | -static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄 | 31 | +static AIKIT_HANDLE *g_AikitHandle = nullptr; // 合成句柄 |
| 28 | 32 | ||
| 29 | static int IflytekLib_2_StopTts(); | 33 | static int IflytekLib_2_StopTts(); |
| 30 | 34 | ||
| 31 | -static FILE *iflytts_fp = NULL; | ||
| 32 | -#define IFLYTTS_FP_NAME "/root/tmp_tts_file.pcm" | 35 | +#define IFLYTEK_RING_BUF_SIZE (1024 * 100) // 100KB缓冲区 |
| 36 | +static T_JZringHandle g_ringHandle = nullptr; | ||
| 37 | +static char *g_ringBuf = nullptr; | ||
| 38 | +static int g_AudioPlayFinshFlag = JZ_FLAGCODE_OFF; | ||
| 33 | 39 | ||
| 40 | +// 同步机制 | ||
| 41 | +static std::mutex g_mutex; | ||
| 42 | +static std::condition_variable g_cv; | ||
| 34 | 43 | ||
| 35 | -void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | 44 | +// 播放线程函数 |
| 45 | +void PlaybackThreadFunc() | ||
| 36 | { | 46 | { |
| 37 | - //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件 | ||
| 38 | - if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) | ||
| 39 | - { | ||
| 40 | - IflytekLib_2_StopTts(); | ||
| 41 | - return; | ||
| 42 | - } | 47 | + U8_t buffer[2048]; // 每次读取2KB |
| 48 | + U32_t readSize = 0; | ||
| 49 | + T_JZsdkReturnCode ret; | ||
| 43 | 50 | ||
| 44 | - //如果存在数据,则播放 | ||
| 45 | - if (output->node->value) | 51 | + g_playThreadRunning = true; |
| 52 | + | ||
| 53 | + while (g_playThreadRunning) | ||
| 46 | { | 54 | { |
| 47 | - //生产的文本数据 output->node->value | ||
| 48 | - //生产的数据长度 output->node->len | ||
| 49 | - //char类型 | 55 | + // 等待有数据可读 |
| 56 | + { | ||
| 57 | + std::unique_lock<std::mutex> lock(g_mutex); | ||
| 58 | + U32_t dataCount = 0; | ||
| 59 | + JZring_GetDataCount(g_ringHandle, &dataCount); | ||
| 50 | 60 | ||
| 51 | - //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 52 | - printf("生产了数据%d\n", output->node->len); | 61 | + JZSDK_LOG_DEBUG("缓冲区数据量: %d", dataCount); |
| 62 | + | ||
| 63 | + if (dataCount == 0) { | ||
| 64 | + // 等待最多100ms或通知 | ||
| 65 | + g_cv.wait_for(lock, std::chrono::milliseconds(100)); | ||
| 66 | + continue; | ||
| 67 | + } | ||
| 68 | + } | ||
| 53 | 69 | ||
| 54 | - //将该数据发送到alsa播放器 | ||
| 55 | - //AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len); | 70 | + g_AudioPlayFinshFlag = JZ_FLAGCODE_ON; |
| 56 | 71 | ||
| 57 | - if (iflytts_fp != NULL) | ||
| 58 | - { | ||
| 59 | - fwrite(output->node->value, sizeof(char), output->node->len, iflytts_fp); | ||
| 60 | - fflush(iflytts_fp); | 72 | + JZSDK_LOG_DEBUG("有数据可读"); |
| 73 | + | ||
| 74 | + // 从环形缓冲区读取数据 | ||
| 75 | + ret = JZring_Read(g_ringHandle, buffer, sizeof(buffer), &readSize); | ||
| 76 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS || readSize == 0) { | ||
| 77 | + usleep(10000); // 10ms | ||
| 78 | + continue; | ||
| 61 | } | 79 | } |
| 80 | + | ||
| 81 | + JZSDK_LOG_DEBUG("输入数据进音频库"); | ||
| 62 | 82 | ||
| 63 | - } | 83 | + // 发送到音频播放器 |
| 84 | + AudioDeal_PcmDataInput_TextSteam(16000, buffer, readSize); | ||
| 64 | 85 | ||
| 86 | + g_AudioPlayFinshFlag = JZ_FLAGCODE_OFF; | ||
| 65 | 87 | ||
| 88 | + JZSDK_LOG_DEBUG("音频库播放完毕"); | ||
| 89 | + | ||
| 90 | + // 检查是否需要停止播放 | ||
| 91 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 92 | + break; | ||
| 93 | + } | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + g_playThreadRunning = false; | ||
| 97 | +} | ||
| 98 | + | ||
| 99 | +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | ||
| 100 | +{ | ||
| 101 | + // 检测数据生成标志位是否有关闭 | ||
| 102 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 103 | + IflytekLib_2_StopTts(); | ||
| 104 | + return; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + if (output->node->value) { | ||
| 108 | + JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 109 | + | ||
| 110 | + // 写入环形缓冲区 | ||
| 111 | + T_JZsdkReturnCode ret; | ||
| 112 | + U32_t written = 0; | ||
| 113 | + | ||
| 114 | + while (written < static_cast<U32_t>(output->node->len)) { | ||
| 115 | + U32_t chunkSize = std::min(static_cast<U32_t>(output->node->len) - written, | ||
| 116 | + static_cast<U32_t>(4096)); | ||
| 117 | + | ||
| 118 | + ret = JZring_Write(g_ringHandle, | ||
| 119 | + reinterpret_cast<U8_t*>(output->node->value) + written, | ||
| 120 | + chunkSize); | ||
| 121 | + | ||
| 122 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 123 | + JZSDK_LOG_ERROR("写入环形缓冲区失败: %d", ret); | ||
| 124 | + break; | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + written += chunkSize; | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | + // 通知播放线程有新数据 | ||
| 131 | + g_cv.notify_one(); | ||
| 132 | + } | ||
| 66 | } | 133 | } |
| 67 | 134 | ||
| 68 | void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { | 135 | void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { |
| 69 | if (eventType == AIKIT_Event_End) { | 136 | if (eventType == AIKIT_Event_End) { |
| 70 | ttsFinished = true; | 137 | ttsFinished = true; |
| 71 | - | ||
| 72 | JZSDK_LOG_INFO("合成完成"); | 138 | JZSDK_LOG_INFO("合成完成"); |
| 139 | + | ||
| 140 | + // 通知播放线程所有数据已生成 | ||
| 141 | + g_cv.notify_one(); | ||
| 73 | } | 142 | } |
| 74 | } | 143 | } |
| 75 | 144 | ||
| 76 | void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { | 145 | void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { |
| 77 | - printf("OnError:%d\n", err); | ||
| 78 | - | ||
| 79 | - //报错 | 146 | + JZSDK_LOG_ERROR("TTS错误: %d, %s", err, desc); |
| 147 | + IflytekLib_2_StopTts(); | ||
| 80 | } | 148 | } |
| 81 | 149 | ||
| 82 | int IflytekLib_2_TextToTts(int language, | 150 | int IflytekLib_2_TextToTts(int language, |
| 83 | - const char *TtsRole, | ||
| 84 | - const char *text, int speed, int volume) | 151 | + const char *TtsRole, |
| 152 | + const char *text, int speed, int volume) | ||
| 85 | { | 153 | { |
| 86 | - | ||
| 87 | - if (iflytts_fp != NULL) | ||
| 88 | - { | ||
| 89 | - JZSDK_LOG_ERROR("file %s is not closed\n", IFLYTTS_FP_NAME); | ||
| 90 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - | ||
| 94 | AIKIT_ParamBuilder* paramBuilder = nullptr; | 154 | AIKIT_ParamBuilder* paramBuilder = nullptr; |
| 95 | AIKIT_DataBuilder* dataBuilder = nullptr; | 155 | AIKIT_DataBuilder* dataBuilder = nullptr; |
| 96 | AiText* aiText_raw = nullptr; | 156 | AiText* aiText_raw = nullptr; |
| 97 | - | 157 | + int ret = 0; |
| 98 | 158 | ||
| 99 | // 重置完成标志 | 159 | // 重置完成标志 |
| 100 | ttsFinished = false; | 160 | ttsFinished = false; |
| 101 | - | 161 | + |
| 162 | + // 重置环形缓冲区 | ||
| 163 | + JZring_Reset(g_ringHandle); | ||
| 164 | + | ||
| 102 | paramBuilder = AIKIT_ParamBuilder::create(); | 165 | paramBuilder = AIKIT_ParamBuilder::create(); |
| 103 | paramBuilder->clear(); | 166 | paramBuilder->clear(); |
| 104 | // 设置发音人 | 167 | // 设置发音人 |
| @@ -108,102 +171,69 @@ int IflytekLib_2_TextToTts(int language, | @@ -108,102 +171,69 @@ int IflytekLib_2_TextToTts(int language, | ||
| 108 | paramBuilder->param("language", language); | 171 | paramBuilder->param("language", language); |
| 109 | // 设置文本编码 | 172 | // 设置文本编码 |
| 110 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); | 173 | paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); |
| 174 | + // 音量 | ||
| 175 | + paramBuilder->param("volume", volume); | ||
| 176 | + // 语速 | ||
| 177 | + paramBuilder->param("speed", speed); | ||
| 111 | 178 | ||
| 112 | - //语速 | ||
| 113 | - //paramBuilder->param("speed",speed); //可选参数,默认为0 | 179 | + JZSDK_LOG_DEBUG("TTS Role:%s, Text:%s, language:%d", TtsRole, text, language); |
| 114 | 180 | ||
| 115 | - //音调 | ||
| 116 | - //paramBuilder->param("pitch",100); //可选参数,默认为0 | ||
| 117 | - | ||
| 118 | - //声音 | ||
| 119 | - //paramBuilder->param("volume",100);//可选参数,默认为0 | ||
| 120 | - | ||
| 121 | - //打开临存文件 | ||
| 122 | - iflytts_fp = fopen(IFLYTTS_FP_NAME, "w+b"); | ||
| 123 | - if (iflytts_fp == NULL) | ||
| 124 | - { | ||
| 125 | - JZSDK_LOG_ERROR("open file %s failed\n", IFLYTTS_FP_NAME); | ||
| 126 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language); | ||
| 130 | - | ||
| 131 | - int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); | 181 | + ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); |
| 132 | if(ret != 0) { | 182 | if(ret != 0) { |
| 133 | - printf("AIKIT_Start failed: %d\n", ret); | 183 | + JZSDK_LOG_ERROR("AIKIT_Start failed: %d", ret); |
| 134 | goto exit; | 184 | goto exit; |
| 135 | } | 185 | } |
| 136 | 186 | ||
| 137 | dataBuilder = AIKIT_DataBuilder::create(); | 187 | dataBuilder = AIKIT_DataBuilder::create(); |
| 138 | dataBuilder->clear(); | 188 | dataBuilder->clear(); |
| 139 | - //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid(); | ||
| 140 | - aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid(); | 189 | + aiText_raw = AiText::get("text")->data(text, strlen(text))->once()->valid(); |
| 141 | dataBuilder->payload(aiText_raw); | 190 | dataBuilder->payload(aiText_raw); |
| 142 | 191 | ||
| 143 | ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); | 192 | ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); |
| 144 | if(ret != 0) { | 193 | if(ret != 0) { |
| 145 | - printf("AIKIT_Write failed: %d\n", ret); | 194 | + JZSDK_LOG_ERROR("AIKIT_Write failed: %d", ret); |
| 146 | goto exit; | 195 | goto exit; |
| 147 | } | 196 | } |
| 148 | 197 | ||
| 149 | - // 等待合成完成 | ||
| 150 | - while(!ttsFinished) { | ||
| 151 | - usleep(1000); | ||
| 152 | - } | ||
| 153 | - | ||
| 154 | - JZSDK_LOG_DEBUG("合成完成,开始播放"); | ||
| 155 | - | ||
| 156 | - //将fp指针移到文件开头 | ||
| 157 | - fseek(iflytts_fp, 0, SEEK_SET); | ||
| 158 | - | ||
| 159 | - //将数据导入播放器 | ||
| 160 | - unsigned char buffer[1024]; | ||
| 161 | - int len; | ||
| 162 | - while (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) != JZ_FLAGCODE_OFF) | ||
| 163 | - { | ||
| 164 | - len = fread(buffer, sizeof(char), 1024, iflytts_fp); | ||
| 165 | - if (len <= 0) | ||
| 166 | - { | ||
| 167 | - JZSDK_LOG_DEBUG("已读取完毕\n"); | 198 | + // 等待合成完成或停止信号 |
| 199 | + while(!ttsFinished || g_AudioPlayFinshFlag == JZ_FLAGCODE_ON) { | ||
| 200 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 168 | break; | 201 | break; |
| 169 | } | 202 | } |
| 170 | - | ||
| 171 | - AudioDeal_PcmDataInput_TextSteam(16000, buffer, len); | 203 | + usleep(10000); // 10ms |
| 172 | } | 204 | } |
| 173 | 205 | ||
| 174 | - JZSDK_LOG_INFO("播放完成"); | ||
| 175 | - | 206 | + JZSDK_LOG_INFO("合成结束"); |
| 207 | + | ||
| 208 | + // 结束合成 | ||
| 176 | ret = AIKIT_End(g_AikitHandle); | 209 | ret = AIKIT_End(g_AikitHandle); |
| 210 | + g_AikitHandle = nullptr; | ||
| 177 | 211 | ||
| 178 | -exit: | 212 | +exit: |
| 179 | if(paramBuilder != nullptr) { | 213 | if(paramBuilder != nullptr) { |
| 180 | delete paramBuilder; | 214 | delete paramBuilder; |
| 181 | } | 215 | } |
| 182 | if(dataBuilder != nullptr) { | 216 | if(dataBuilder != nullptr) { |
| 183 | delete dataBuilder; | 217 | delete dataBuilder; |
| 184 | } | 218 | } |
| 185 | - | ||
| 186 | - if (iflytts_fp != NULL) | ||
| 187 | - { | ||
| 188 | - fclose(iflytts_fp); | ||
| 189 | - iflytts_fp = NULL; | ||
| 190 | - } | ||
| 191 | - | ||
| 192 | - return 0; | 219 | + |
| 220 | + return ret; | ||
| 193 | } | 221 | } |
| 194 | 222 | ||
| 195 | - | ||
| 196 | - | ||
| 197 | - | ||
| 198 | - | ||
| 199 | - | ||
| 200 | - | ||
| 201 | - | ||
| 202 | - | ||
| 203 | - | ||
| 204 | - | ||
| 205 | int IflytekLib_2_Init() | 223 | int IflytekLib_2_Init() |
| 206 | { | 224 | { |
| 225 | + // 初始化环形缓冲区 | ||
| 226 | + g_ringBuf = new char[IFLYTEK_RING_BUF_SIZE]; | ||
| 227 | + if (JZring_Init(&g_ringHandle, reinterpret_cast<U8_t*>(g_ringBuf), IFLYTEK_RING_BUF_SIZE) | ||
| 228 | + != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 229 | + JZSDK_LOG_ERROR("环形缓冲区初始化失败"); | ||
| 230 | + return -1; | ||
| 231 | + } | ||
| 232 | + | ||
| 233 | + // 启动播放线程 | ||
| 234 | + std::thread(PlaybackThreadFunc).detach(); | ||
| 235 | + | ||
| 236 | + // 初始化TTS SDK | ||
| 207 | AIKIT_Configurator::builder() | 237 | AIKIT_Configurator::builder() |
| 208 | .app() | 238 | .app() |
| 209 | .appID("03857dfd") | 239 | .appID("03857dfd") |
| @@ -218,7 +248,7 @@ int IflytekLib_2_Init() | @@ -218,7 +248,7 @@ int IflytekLib_2_Init() | ||
| 218 | 248 | ||
| 219 | int ret = AIKIT_Init(); | 249 | int ret = AIKIT_Init(); |
| 220 | if(ret != 0) { | 250 | if(ret != 0) { |
| 221 | - printf("AIKIT_Init failed: %d\n", ret); | 251 | + JZSDK_LOG_ERROR("AIKIT_Init failed: %d", ret); |
| 222 | return -1; | 252 | return -1; |
| 223 | } | 253 | } |
| 224 | 254 | ||
| @@ -230,18 +260,49 @@ int IflytekLib_2_Init() | @@ -230,18 +260,49 @@ int IflytekLib_2_Init() | ||
| 230 | 260 | ||
| 231 | int IflytekLib_2_UnInit() | 261 | int IflytekLib_2_UnInit() |
| 232 | { | 262 | { |
| 263 | + // 停止播放线程 | ||
| 264 | + g_playThreadRunning = false; | ||
| 265 | + g_cv.notify_one(); | ||
| 266 | + | ||
| 267 | + // 等待播放线程退出 | ||
| 268 | + int waitCount = 0; | ||
| 269 | + while (g_playThreadRunning && waitCount++ < 50) { | ||
| 270 | + usleep(100000); // 100ms | ||
| 271 | + } | ||
| 272 | + | ||
| 273 | + // 反初始化TTS SDK | ||
| 274 | + if (g_AikitHandle) { | ||
| 275 | + AIKIT_End(g_AikitHandle); | ||
| 276 | + g_AikitHandle = nullptr; | ||
| 277 | + } | ||
| 278 | + | ||
| 233 | AIKIT_UnInit(); | 279 | AIKIT_UnInit(); |
| 280 | + | ||
| 281 | + // 释放环形缓冲区 | ||
| 282 | + if (g_ringHandle) { | ||
| 283 | + JZring_DeInit(g_ringHandle); | ||
| 284 | + g_ringHandle = nullptr; | ||
| 285 | + } | ||
| 286 | + | ||
| 287 | + if (g_ringBuf) { | ||
| 288 | + delete[] g_ringBuf; | ||
| 289 | + g_ringBuf = nullptr; | ||
| 290 | + } | ||
| 291 | + | ||
| 234 | return 0; | 292 | return 0; |
| 235 | } | 293 | } |
| 236 | 294 | ||
| 237 | static int IflytekLib_2_StopTts() | 295 | static int IflytekLib_2_StopTts() |
| 238 | { | 296 | { |
| 239 | - AIKIT_OutputEvent eventData = {}; | ||
| 240 | - if (g_AikitHandle != nullptr) | ||
| 241 | - { | ||
| 242 | - OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData); | 297 | + if (g_AikitHandle) { |
| 298 | + AIKIT_End(g_AikitHandle); | ||
| 299 | + g_AikitHandle = nullptr; | ||
| 300 | + ttsFinished = true; | ||
| 301 | + JZSDK_LOG_INFO("TTS合成已停止"); | ||
| 243 | } | 302 | } |
| 244 | 303 | ||
| 304 | + // 通知播放线程 | ||
| 305 | + g_cv.notify_one(); | ||
| 245 | return 0; | 306 | return 0; |
| 246 | } | 307 | } |
| 247 | 308 |
Module/Megaphone/TTS/iflytek_2/ifybak3
已删除
100644 → 0
| 1 | -#include <fstream> | ||
| 2 | -#include <assert.h> | ||
| 3 | -#include <cstring> | ||
| 4 | -#include <atomic> | ||
| 5 | -#include <unistd.h> | ||
| 6 | -#include <string> | ||
| 7 | - | ||
| 8 | -#include "JZsdkLib.h" | ||
| 9 | -#include "version_choose.h" | ||
| 10 | -#include "JZsdk_base/JZring/JZring.h" | ||
| 11 | - | ||
| 12 | -#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON | ||
| 13 | - | ||
| 14 | -#include "aikit_biz_api.h" | ||
| 15 | -#include "aikit_constant.h" | ||
| 16 | -#include "aikit_biz_config.h" | ||
| 17 | -#include "iflytek_tts.h" | ||
| 18 | -#include "AudioDeal/AudioDeal.h" | ||
| 19 | -#include "../../Megaphone.h" | ||
| 20 | -#include "iflytek_tts.h" | ||
| 21 | - | ||
| 22 | - | ||
| 23 | -using namespace std; | ||
| 24 | -using namespace AIKIT; | ||
| 25 | - | ||
| 26 | -static std::atomic_bool ttsFinished(false); | ||
| 27 | -static const char *ABILITY = "e2e44feff"; | ||
| 28 | -static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄 | ||
| 29 | - | ||
| 30 | -static int IflytekLib_2_StopTts(); | ||
| 31 | - | ||
| 32 | -#define IFLYTEK_RING_BUF_SIZE 1024*100 | ||
| 33 | -static T_JZringHandle g_ringHandle; | ||
| 34 | -static char *g_ringBuf = NULL; | ||
| 35 | - | ||
| 36 | -void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | ||
| 37 | -{ | ||
| 38 | - T_JZsdkReturnCode ret; | ||
| 39 | - | ||
| 40 | - //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件 | ||
| 41 | - if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) | ||
| 42 | - { | ||
| 43 | - IflytekLib_2_StopTts(); | ||
| 44 | - return; | ||
| 45 | - } | ||
| 46 | - | ||
| 47 | - //如果存在数据,则播放 | ||
| 48 | - if (output->node->value) | ||
| 49 | - { | ||
| 50 | - //生产的文本数据 output->node->value | ||
| 51 | - //生产的数据长度 output->node->len | ||
| 52 | - //char类型 | ||
| 53 | - | ||
| 54 | - //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 55 | - printf("生产了数据%d\n", output->node->len); | ||
| 56 | - | ||
| 57 | - //将该数据发送到alsa播放器 | ||
| 58 | - //AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len); | ||
| 59 | - | ||
| 60 | - | ||
| 61 | - while (1) | ||
| 62 | - { | ||
| 63 | - ret = JZring_Write(g_ringHandle, (U8_t *)output->node->value, (U32_t)output->node->len); | ||
| 64 | - if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
| 65 | - { | ||
| 66 | - break; | ||
| 67 | - } | ||
| 68 | - } | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | -} | ||
| 72 | - | ||
| 73 | -void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { | ||
| 74 | - if (eventType == AIKIT_Event_End) { | ||
| 75 | - ttsFinished = true; | ||
| 76 | - | ||
| 77 | - JZSDK_LOG_INFO("合成完成"); | ||
| 78 | - } | ||
| 79 | -} | ||
| 80 | - | ||
| 81 | -void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { | ||
| 82 | - printf("OnError:%d\n", err); | ||
| 83 | - | ||
| 84 | - //报错 | ||
| 85 | -} | ||
| 86 | - | ||
| 87 | -int IflytekLib_2_TextToTts(int language, | ||
| 88 | - const char *TtsRole, | ||
| 89 | - const char *text, int speed, int volume) | ||
| 90 | -{ | ||
| 91 | - | ||
| 92 | - AIKIT_ParamBuilder* paramBuilder = nullptr; | ||
| 93 | - AIKIT_DataBuilder* dataBuilder = nullptr; | ||
| 94 | - AiText* aiText_raw = nullptr; | ||
| 95 | - | ||
| 96 | - | ||
| 97 | - // 重置完成标志 | ||
| 98 | - ttsFinished = false; | ||
| 99 | - | ||
| 100 | - paramBuilder = AIKIT_ParamBuilder::create(); | ||
| 101 | - paramBuilder->clear(); | ||
| 102 | - // 设置发音人 | ||
| 103 | - paramBuilder->param("vcn", TtsRole, strlen(TtsRole)); | ||
| 104 | - paramBuilder->param("vcnModel", TtsRole, strlen(TtsRole)); | ||
| 105 | - // 设置语种 | ||
| 106 | - paramBuilder->param("language", language); | ||
| 107 | - // 设置文本编码 | ||
| 108 | - paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); | ||
| 109 | - | ||
| 110 | - //语速 | ||
| 111 | - //paramBuilder->param("speed",speed); //可选参数,默认为0 | ||
| 112 | - | ||
| 113 | - //音调 | ||
| 114 | - //paramBuilder->param("pitch",100); //可选参数,默认为0 | ||
| 115 | - | ||
| 116 | - //声音 | ||
| 117 | - //paramBuilder->param("volume",100);//可选参数,默认为0 | ||
| 118 | - | ||
| 119 | - //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language); | ||
| 120 | - | ||
| 121 | - int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); | ||
| 122 | - if(ret != 0) { | ||
| 123 | - printf("AIKIT_Start failed: %d\n", ret); | ||
| 124 | - goto exit; | ||
| 125 | - } | ||
| 126 | - | ||
| 127 | - dataBuilder = AIKIT_DataBuilder::create(); | ||
| 128 | - dataBuilder->clear(); | ||
| 129 | - //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid(); | ||
| 130 | - aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid(); | ||
| 131 | - dataBuilder->payload(aiText_raw); | ||
| 132 | - | ||
| 133 | - ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); | ||
| 134 | - if(ret != 0) { | ||
| 135 | - printf("AIKIT_Write failed: %d\n", ret); | ||
| 136 | - goto exit; | ||
| 137 | - } | ||
| 138 | - | ||
| 139 | - // 等待合成完成 | ||
| 140 | - while(!ttsFinished) { | ||
| 141 | - usleep(1000); | ||
| 142 | - } | ||
| 143 | - | ||
| 144 | - //JZSDK_LOG_INFO("合成完成"); | ||
| 145 | - | ||
| 146 | - ret = AIKIT_End(g_AikitHandle); | ||
| 147 | - | ||
| 148 | -exit: | ||
| 149 | - if(paramBuilder != nullptr) { | ||
| 150 | - delete paramBuilder; | ||
| 151 | - } | ||
| 152 | - if(dataBuilder != nullptr) { | ||
| 153 | - delete dataBuilder; | ||
| 154 | - } | ||
| 155 | -} | ||
| 156 | - | ||
| 157 | - | ||
| 158 | - | ||
| 159 | - | ||
| 160 | - | ||
| 161 | - | ||
| 162 | - | ||
| 163 | - | ||
| 164 | - | ||
| 165 | - | ||
| 166 | - | ||
| 167 | -int IflytekLib_2_Init() | ||
| 168 | -{ | ||
| 169 | - //初始化环形缓冲区数组 | ||
| 170 | - g_ringBuf = (char *)malloc(IFLYTEK_RING_BUF_SIZE * sizeof(char)); | ||
| 171 | - JZring_Init(&g_ringHandle, g_ringBuf, IFLYTEK_RING_BUF_SIZE); | ||
| 172 | - | ||
| 173 | - AIKIT_Configurator::builder() | ||
| 174 | - .app() | ||
| 175 | - .appID("03857dfd") | ||
| 176 | - .apiSecret("OTA2OTEzMTVlOGYwMjllMmJkYzEwZGY5") | ||
| 177 | - .apiKey("2b2c60f8a80b8cdfe45ae1058a25149a") | ||
| 178 | - .workDir("/root/Iflytek_2") | ||
| 179 | - .auth() | ||
| 180 | - .authType(0) | ||
| 181 | - .log() | ||
| 182 | - .logLevel(LOG_LVL_OFF) //关闭日志打印 | ||
| 183 | - .logMode(LOG_STDOUT); //日志输出为控制台 | ||
| 184 | - | ||
| 185 | - int ret = AIKIT_Init(); | ||
| 186 | - if(ret != 0) { | ||
| 187 | - printf("AIKIT_Init failed: %d\n", ret); | ||
| 188 | - return -1; | ||
| 189 | - } | ||
| 190 | - | ||
| 191 | - AIKIT_Callbacks cbs = {OnOutput, OnEvent, OnError}; | ||
| 192 | - AIKIT_RegisterAbilityCallback(ABILITY, cbs); | ||
| 193 | - | ||
| 194 | - return 0; | ||
| 195 | -} | ||
| 196 | - | ||
| 197 | -int IflytekLib_2_UnInit() | ||
| 198 | -{ | ||
| 199 | - AIKIT_UnInit(); | ||
| 200 | - return 0; | ||
| 201 | -} | ||
| 202 | - | ||
| 203 | -static int IflytekLib_2_StopTts() | ||
| 204 | -{ | ||
| 205 | - AIKIT_OutputEvent eventData = {}; | ||
| 206 | - if (g_AikitHandle != nullptr) | ||
| 207 | - { | ||
| 208 | - OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData); | ||
| 209 | - } | ||
| 210 | - | ||
| 211 | - return 0; | ||
| 212 | -} | ||
| 213 | - | ||
| 214 | -#endif |
Module/Megaphone/TTS/iflytek_2/ifybak3.cpp
0 → 100644
| 1 | +#include <fstream> | ||
| 2 | +#include <assert.h> | ||
| 3 | +#include <cstring> | ||
| 4 | +#include <atomic> | ||
| 5 | +#include <unistd.h> | ||
| 6 | +#include <string> | ||
| 7 | +#include <thread> | ||
| 8 | +#include <mutex> | ||
| 9 | +#include <condition_variable> | ||
| 10 | + | ||
| 11 | +#include "JZsdkLib.h" | ||
| 12 | +#include "version_choose.h" | ||
| 13 | +#include "JZsdk_base/JZring/JZring.h" | ||
| 14 | + | ||
| 15 | +#if 0 | ||
| 16 | + | ||
| 17 | +#include "aikit_biz_api.h" | ||
| 18 | +#include "aikit_constant.h" | ||
| 19 | +#include "aikit_biz_config.h" | ||
| 20 | +#include "iflytek_tts.h" | ||
| 21 | +#include "AudioDeal/AudioDeal.h" | ||
| 22 | +#include "../../Megaphone.h" | ||
| 23 | +#include "iflytek_tts.h" | ||
| 24 | + | ||
| 25 | +using namespace std; | ||
| 26 | +using namespace AIKIT; | ||
| 27 | + | ||
| 28 | +static std::atomic_bool ttsFinished(false); | ||
| 29 | +static std::atomic_bool g_playThreadRunning(false); | ||
| 30 | +static const char *ABILITY = "e2e44feff"; | ||
| 31 | +static AIKIT_HANDLE *g_AikitHandle = nullptr; // 合成句柄 | ||
| 32 | + | ||
| 33 | +static int IflytekLib_2_StopTts(); | ||
| 34 | + | ||
| 35 | +#define IFLYTEK_RING_BUF_SIZE (1024 * 100) // 100KB缓冲区 | ||
| 36 | +static T_JZringHandle g_ringHandle = nullptr; | ||
| 37 | +static char *g_ringBuf = nullptr; | ||
| 38 | + | ||
| 39 | +// 同步机制 | ||
| 40 | +static std::mutex g_mutex; | ||
| 41 | +static std::condition_variable g_cv; | ||
| 42 | + | ||
| 43 | +// 播放线程函数 | ||
| 44 | +void PlaybackThreadFunc() | ||
| 45 | +{ | ||
| 46 | + U8_t buffer[2048]; // 每次读取2KB | ||
| 47 | + U32_t readSize = 0; | ||
| 48 | + T_JZsdkReturnCode ret; | ||
| 49 | + | ||
| 50 | + g_playThreadRunning = true; | ||
| 51 | + | ||
| 52 | + while (g_playThreadRunning) | ||
| 53 | + { | ||
| 54 | + // 等待有数据可读 | ||
| 55 | + { | ||
| 56 | + std::unique_lock<std::mutex> lock(g_mutex); | ||
| 57 | + U32_t dataCount = 0; | ||
| 58 | + JZring_GetDataCount(g_ringHandle, &dataCount); | ||
| 59 | + | ||
| 60 | + if (dataCount == 0) { | ||
| 61 | + // 等待最多100ms或通知 | ||
| 62 | + g_cv.wait_for(lock, std::chrono::milliseconds(100)); | ||
| 63 | + continue; | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + JZSDK_LOG_DEBUG("有数据可读"); | ||
| 68 | + | ||
| 69 | + // 从环形缓冲区读取数据 | ||
| 70 | + ret = JZring_Read(g_ringHandle, buffer, sizeof(buffer), &readSize); | ||
| 71 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS || readSize == 0) { | ||
| 72 | + usleep(10000); // 10ms | ||
| 73 | + continue; | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + | ||
| 78 | + // 发送到音频播放器 | ||
| 79 | + AudioDeal_PcmDataInput_TextSteam(16000, buffer, readSize); | ||
| 80 | + | ||
| 81 | + // 检查是否需要停止播放 | ||
| 82 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 83 | + break; | ||
| 84 | + } | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + g_playThreadRunning = false; | ||
| 88 | +} | ||
| 89 | + | ||
| 90 | +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) | ||
| 91 | +{ | ||
| 92 | + // 检测数据生成标志位是否有关闭 | ||
| 93 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 94 | + IflytekLib_2_StopTts(); | ||
| 95 | + return; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + if (output->node->value) { | ||
| 99 | + JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); | ||
| 100 | + | ||
| 101 | + // 写入环形缓冲区 | ||
| 102 | + T_JZsdkReturnCode ret; | ||
| 103 | + U32_t written = 0; | ||
| 104 | + | ||
| 105 | + while (written < static_cast<U32_t>(output->node->len)) { | ||
| 106 | + U32_t chunkSize = std::min(static_cast<U32_t>(output->node->len) - written, | ||
| 107 | + static_cast<U32_t>(4096)); | ||
| 108 | + | ||
| 109 | + ret = JZring_Write(g_ringHandle, | ||
| 110 | + reinterpret_cast<U8_t*>(output->node->value) + written, | ||
| 111 | + chunkSize); | ||
| 112 | + | ||
| 113 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 114 | + JZSDK_LOG_ERROR("写入环形缓冲区失败: %d", ret); | ||
| 115 | + break; | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + written += chunkSize; | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + // 通知播放线程有新数据 | ||
| 122 | + g_cv.notify_one(); | ||
| 123 | + } | ||
| 124 | +} | ||
| 125 | + | ||
| 126 | +void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) { | ||
| 127 | + if (eventType == AIKIT_Event_End) { | ||
| 128 | + ttsFinished = true; | ||
| 129 | + JZSDK_LOG_INFO("合成完成"); | ||
| 130 | + | ||
| 131 | + // 通知播放线程所有数据已生成 | ||
| 132 | + g_cv.notify_one(); | ||
| 133 | + } | ||
| 134 | +} | ||
| 135 | + | ||
| 136 | +void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) { | ||
| 137 | + JZSDK_LOG_ERROR("TTS错误: %d, %s", err, desc); | ||
| 138 | + IflytekLib_2_StopTts(); | ||
| 139 | +} | ||
| 140 | + | ||
| 141 | +int IflytekLib_2_TextToTts(int language, | ||
| 142 | + const char *TtsRole, | ||
| 143 | + const char *text, int speed, int volume) | ||
| 144 | +{ | ||
| 145 | + AIKIT_ParamBuilder* paramBuilder = nullptr; | ||
| 146 | + AIKIT_DataBuilder* dataBuilder = nullptr; | ||
| 147 | + AiText* aiText_raw = nullptr; | ||
| 148 | + int ret = 0; | ||
| 149 | + | ||
| 150 | + // 重置完成标志 | ||
| 151 | + ttsFinished = false; | ||
| 152 | + | ||
| 153 | + // 重置环形缓冲区 | ||
| 154 | + JZring_Reset(g_ringHandle); | ||
| 155 | + | ||
| 156 | + paramBuilder = AIKIT_ParamBuilder::create(); | ||
| 157 | + paramBuilder->clear(); | ||
| 158 | + // 设置发音人 | ||
| 159 | + paramBuilder->param("vcn", TtsRole, strlen(TtsRole)); | ||
| 160 | + paramBuilder->param("vcnModel", TtsRole, strlen(TtsRole)); | ||
| 161 | + // 设置语种 | ||
| 162 | + paramBuilder->param("language", language); | ||
| 163 | + // 设置文本编码 | ||
| 164 | + paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8")); | ||
| 165 | + // 音量 | ||
| 166 | + paramBuilder->param("volume", volume); | ||
| 167 | + // 语速 | ||
| 168 | + paramBuilder->param("speed", speed); | ||
| 169 | + | ||
| 170 | + JZSDK_LOG_DEBUG("TTS Role:%s, Text:%s, language:%d", TtsRole, text, language); | ||
| 171 | + | ||
| 172 | + ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); | ||
| 173 | + if(ret != 0) { | ||
| 174 | + JZSDK_LOG_ERROR("AIKIT_Start failed: %d", ret); | ||
| 175 | + goto exit; | ||
| 176 | + } | ||
| 177 | + | ||
| 178 | + dataBuilder = AIKIT_DataBuilder::create(); | ||
| 179 | + dataBuilder->clear(); | ||
| 180 | + aiText_raw = AiText::get("text")->data(text, strlen(text))->once()->valid(); | ||
| 181 | + dataBuilder->payload(aiText_raw); | ||
| 182 | + | ||
| 183 | + ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder)); | ||
| 184 | + if(ret != 0) { | ||
| 185 | + JZSDK_LOG_ERROR("AIKIT_Write failed: %d", ret); | ||
| 186 | + goto exit; | ||
| 187 | + } | ||
| 188 | + | ||
| 189 | + // 等待合成完成或停止信号 | ||
| 190 | + while(!ttsFinished) { | ||
| 191 | + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF) { | ||
| 192 | + break; | ||
| 193 | + } | ||
| 194 | + usleep(10000); // 10ms | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + // 结束合成 | ||
| 198 | + ret = AIKIT_End(g_AikitHandle); | ||
| 199 | + g_AikitHandle = nullptr; | ||
| 200 | + | ||
| 201 | +exit: | ||
| 202 | + if(paramBuilder != nullptr) { | ||
| 203 | + delete paramBuilder; | ||
| 204 | + } | ||
| 205 | + if(dataBuilder != nullptr) { | ||
| 206 | + delete dataBuilder; | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + return ret; | ||
| 210 | +} | ||
| 211 | + | ||
| 212 | +int IflytekLib_2_Init() | ||
| 213 | +{ | ||
| 214 | + // 初始化环形缓冲区 | ||
| 215 | + g_ringBuf = new char[IFLYTEK_RING_BUF_SIZE]; | ||
| 216 | + if (JZring_Init(&g_ringHandle, reinterpret_cast<U8_t*>(g_ringBuf), IFLYTEK_RING_BUF_SIZE) | ||
| 217 | + != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
| 218 | + JZSDK_LOG_ERROR("环形缓冲区初始化失败"); | ||
| 219 | + return -1; | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + // 启动播放线程 | ||
| 223 | + std::thread(PlaybackThreadFunc).detach(); | ||
| 224 | + | ||
| 225 | + // 初始化TTS SDK | ||
| 226 | + AIKIT_Configurator::builder() | ||
| 227 | + .app() | ||
| 228 | + .appID("03857dfd") | ||
| 229 | + .apiSecret("OTA2OTEzMTVlOGYwMjllMmJkYzEwZGY5") | ||
| 230 | + .apiKey("2b2c60f8a80b8cdfe45ae1058a25149a") | ||
| 231 | + .workDir("/root/Iflytek_2") | ||
| 232 | + .auth() | ||
| 233 | + .authType(0) | ||
| 234 | + .log() | ||
| 235 | + .logLevel(LOG_LVL_OFF) //关闭日志打印 | ||
| 236 | + .logMode(LOG_STDOUT); //日志输出为控制台 | ||
| 237 | + | ||
| 238 | + int ret = AIKIT_Init(); | ||
| 239 | + if(ret != 0) { | ||
| 240 | + JZSDK_LOG_ERROR("AIKIT_Init failed: %d", ret); | ||
| 241 | + return -1; | ||
| 242 | + } | ||
| 243 | + | ||
| 244 | + AIKIT_Callbacks cbs = {OnOutput, OnEvent, OnError}; | ||
| 245 | + AIKIT_RegisterAbilityCallback(ABILITY, cbs); | ||
| 246 | + | ||
| 247 | + return 0; | ||
| 248 | +} | ||
| 249 | + | ||
| 250 | +int IflytekLib_2_UnInit() | ||
| 251 | +{ | ||
| 252 | + // 停止播放线程 | ||
| 253 | + g_playThreadRunning = false; | ||
| 254 | + g_cv.notify_one(); | ||
| 255 | + | ||
| 256 | + // 等待播放线程退出 | ||
| 257 | + int waitCount = 0; | ||
| 258 | + while (g_playThreadRunning && waitCount++ < 50) { | ||
| 259 | + usleep(100000); // 100ms | ||
| 260 | + } | ||
| 261 | + | ||
| 262 | + // 反初始化TTS SDK | ||
| 263 | + if (g_AikitHandle) { | ||
| 264 | + AIKIT_End(g_AikitHandle); | ||
| 265 | + g_AikitHandle = nullptr; | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + AIKIT_UnInit(); | ||
| 269 | + | ||
| 270 | + // 释放环形缓冲区 | ||
| 271 | + if (g_ringHandle) { | ||
| 272 | + JZring_DeInit(g_ringHandle); | ||
| 273 | + g_ringHandle = nullptr; | ||
| 274 | + } | ||
| 275 | + | ||
| 276 | + if (g_ringBuf) { | ||
| 277 | + delete[] g_ringBuf; | ||
| 278 | + g_ringBuf = nullptr; | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + return 0; | ||
| 282 | +} | ||
| 283 | + | ||
| 284 | +static int IflytekLib_2_StopTts() | ||
| 285 | +{ | ||
| 286 | + if (g_AikitHandle) { | ||
| 287 | + AIKIT_End(g_AikitHandle); | ||
| 288 | + g_AikitHandle = nullptr; | ||
| 289 | + ttsFinished = true; | ||
| 290 | + JZSDK_LOG_INFO("TTS合成已停止"); | ||
| 291 | + } | ||
| 292 | + | ||
| 293 | + // 通知播放线程 | ||
| 294 | + g_cv.notify_one(); | ||
| 295 | + return 0; | ||
| 296 | +} | ||
| 297 | + | ||
| 298 | +#endif |
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | 8 | ||
| 9 | #define MAX(a,b) ( (a>b) ?a:b ) | 9 | #define MAX(a,b) ( (a>b) ?a:b ) |
| 10 | 10 | ||
| 11 | -static int g_SearchLight_Subscription_Flag = JZ_FLAGCODE_ON; //消息订阅状态 | 11 | +static int g_SearchLight_Subscription_Flag = JZ_FLAGCODE_OFF; //消息订阅状态 默认关闭本机的 |
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | typedef struct T_JzSearchLightInfo{ | 14 | typedef struct T_JzSearchLightInfo{ |
| @@ -191,7 +191,7 @@ T_JZsdkReturnCode SearchLight_Obtain_Frequency(int Frequency) | @@ -191,7 +191,7 @@ T_JZsdkReturnCode SearchLight_Obtain_Frequency(int Frequency) | ||
| 191 | //收到探照灯温度 | 191 | //收到探照灯温度 |
| 192 | T_JZsdkReturnCode SearchLight_Obtain_Temperature(int left, int right) | 192 | T_JZsdkReturnCode SearchLight_Obtain_Temperature(int left, int right) |
| 193 | { | 193 | { |
| 194 | - JZSDK_LOG_DEBUG("%x收到探照灯温度回复%d %d",DEVICE_VERSION, left, right); | 194 | + //JZSDK_LOG_DEBUG("%x收到探照灯温度回复%d %d",DEVICE_VERSION, left, right); |
| 195 | 195 | ||
| 196 | g_SearchLight_Info.Attribute.LeftTemperature = left; | 196 | g_SearchLight_Info.Attribute.LeftTemperature = left; |
| 197 | g_SearchLight_Info.Attribute.RightTemperature = right; | 197 | g_SearchLight_Info.Attribute.RightTemperature = right; |
| @@ -11,175 +11,160 @@ | @@ -11,175 +11,160 @@ | ||
| 11 | 11 | ||
| 12 | static T_JZsdkReturnCode SideLaser_RealCotrol(int LaserNum, int status); | 12 | static T_JZsdkReturnCode SideLaser_RealCotrol(int LaserNum, int status); |
| 13 | 13 | ||
| 14 | - | ||
| 15 | - | ||
| 16 | -static T_SideLaserMode g_SideLaser_RealMode = SIDE_LASER_OFF; //实际控制灯光的值 | ||
| 17 | - | ||
| 18 | -static int g_SideLaserMode = 0; //realmode -1 | ||
| 19 | -static int g_SideLaserControl = JZ_FLAGCODE_OFF; | ||
| 20 | - | ||
| 21 | -static int SideLaser_Frequency = 50; //1~100 | ||
| 22 | - | ||
| 23 | - | ||
| 24 | - | 14 | +static T_JZsdkSideLaserInfo g_SideLaserInfo; |
| 25 | 15 | ||
| 26 | static void *SideLaserControl_task(void *arg) | 16 | static void *SideLaserControl_task(void *arg) |
| 27 | { | 17 | { |
| 28 | - int status = JZ_FLAGCODE_OFF; | ||
| 29 | - static T_SideLaserMode Last_LaserMode = SIDE_LASER_OFF; | 18 | + T_JZsdkSideLaserInfo LastSideLaserInfo = g_SideLaserInfo; |
| 30 | 19 | ||
| 20 | + int tempStatus = LastSideLaserInfo.status; | ||
| 31 | 21 | ||
| 32 | #if DEVICE_VERSION == JZ_U3S | 22 | #if DEVICE_VERSION == JZ_U3S |
| 23 | + | ||
| 33 | while (1) | 24 | while (1) |
| 34 | { | 25 | { |
| 35 | - | ||
| 36 | - switch (g_SideLaser_RealMode) | 26 | + if (g_SideLaserInfo.status == JZ_FLAGCODE_OFF) |
| 37 | { | 27 | { |
| 38 | - case SIDE_LASER_OFF: | 28 | + if (LastSideLaserInfo.status != JZ_FLAGCODE_OFF) |
| 39 | { | 29 | { |
| 40 | - if (Last_LaserMode == g_SideLaser_RealMode) | ||
| 41 | - { | ||
| 42 | - delayMs(10); | ||
| 43 | - continue; | ||
| 44 | - } | ||
| 45 | - else | ||
| 46 | - { | ||
| 47 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 48 | - SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); | ||
| 49 | - continue; | ||
| 50 | - } | ||
| 51 | - break; | 30 | + SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); |
| 52 | } | 31 | } |
| 53 | - | 32 | + |
| 33 | + LastSideLaserInfo.status = g_SideLaserInfo.status; | ||
| 34 | + delayMs(10); | ||
| 35 | + continue; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + | ||
| 39 | + switch(g_SideLaserInfo.mode) | ||
| 40 | + { | ||
| 54 | case SIDE_LASER_GREEN_AWALYS_ON: | 41 | case SIDE_LASER_GREEN_AWALYS_ON: |
| 55 | { | 42 | { |
| 56 | - if (Last_LaserMode == g_SideLaser_RealMode) | ||
| 57 | - { | ||
| 58 | - delayMs(10); | ||
| 59 | - continue; | ||
| 60 | - } | ||
| 61 | - else | 43 | + if (LastSideLaserInfo.mode != g_SideLaserInfo.mode) |
| 62 | { | 44 | { |
| 63 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 64 | SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); | 45 | SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); |
| 65 | SideLaser_RealCotrol(0, JZ_FLAGCODE_ON); | 46 | SideLaser_RealCotrol(0, JZ_FLAGCODE_ON); |
| 66 | - continue; | ||
| 67 | } | 47 | } |
| 68 | - break; | 48 | + |
| 49 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; | ||
| 50 | + delayMs(10); | ||
| 51 | + continue; | ||
| 69 | } | 52 | } |
| 70 | - | 53 | + break; |
| 54 | + | ||
| 71 | case SIDE_LASER_RED_AWALYS_ON: | 55 | case SIDE_LASER_RED_AWALYS_ON: |
| 72 | { | 56 | { |
| 73 | - if (Last_LaserMode == g_SideLaser_RealMode) | 57 | + if (LastSideLaserInfo.mode != g_SideLaserInfo.mode) |
| 74 | { | 58 | { |
| 75 | - delayMs(10); | ||
| 76 | - continue; | ||
| 77 | - } | ||
| 78 | - else | ||
| 79 | - { | ||
| 80 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 81 | SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); | 59 | SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); |
| 82 | SideLaser_RealCotrol(1, JZ_FLAGCODE_ON); | 60 | SideLaser_RealCotrol(1, JZ_FLAGCODE_ON); |
| 83 | - continue; | ||
| 84 | } | 61 | } |
| 85 | - break; | 62 | + |
| 63 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; | ||
| 64 | + delayMs(10); | ||
| 65 | + continue; | ||
| 86 | } | 66 | } |
| 67 | + break; | ||
| 87 | 68 | ||
| 88 | - | ||
| 89 | case SIDE_LASER_GREEN_AND_RED_AWALYS_ON: | 69 | case SIDE_LASER_GREEN_AND_RED_AWALYS_ON: |
| 90 | { | 70 | { |
| 91 | - if (Last_LaserMode == g_SideLaser_RealMode) | ||
| 92 | - { | ||
| 93 | - delayMs(10); | ||
| 94 | - continue; | ||
| 95 | - } | ||
| 96 | - else | 71 | + if (LastSideLaserInfo.mode != g_SideLaserInfo.mode) |
| 97 | { | 72 | { |
| 98 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 99 | - SideLaser_RealCotrol(255, JZ_FLAGCODE_ON); | ||
| 100 | - continue; | 73 | + SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); |
| 101 | } | 74 | } |
| 102 | - break; | 75 | + |
| 76 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; | ||
| 77 | + delayMs(10); | ||
| 78 | + continue; | ||
| 103 | } | 79 | } |
| 80 | + break; | ||
| 104 | 81 | ||
| 105 | case SIDE_LASER_GREEN_ADD_RED_TOGETHER_FLICKER: | 82 | case SIDE_LASER_GREEN_ADD_RED_TOGETHER_FLICKER: |
| 106 | { | 83 | { |
| 107 | - if (Last_LaserMode != g_SideLaser_RealMode) | ||
| 108 | - { | ||
| 109 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 110 | - } | 84 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; |
| 111 | 85 | ||
| 112 | - if (status == JZ_FLAGCODE_OFF) | 86 | + if (tempStatus == JZ_FLAGCODE_OFF) |
| 113 | { | 87 | { |
| 114 | - status = JZ_FLAGCODE_ON; | 88 | + tempStatus = JZ_FLAGCODE_ON; |
| 115 | } | 89 | } |
| 116 | else | 90 | else |
| 117 | { | 91 | { |
| 118 | - status = JZ_FLAGCODE_OFF; | 92 | + tempStatus = JZ_FLAGCODE_OFF; |
| 119 | } | 93 | } |
| 120 | 94 | ||
| 121 | - SideLaser_RealCotrol(255, status); | ||
| 122 | - | ||
| 123 | - delayMs(1000/SideLaser_Frequency); | ||
| 124 | - | 95 | + SideLaser_RealCotrol(255, tempStatus); |
| 96 | + delayMs(1000/g_SideLaserInfo.Frequency); | ||
| 125 | continue; | 97 | continue; |
| 126 | } | 98 | } |
| 127 | - | 99 | + break; |
| 100 | + | ||
| 128 | case SIDE_LASER_GREEN_ADD_RED_ALTERNATION_FLICKER: | 101 | case SIDE_LASER_GREEN_ADD_RED_ALTERNATION_FLICKER: |
| 129 | { | 102 | { |
| 130 | - if (Last_LaserMode != g_SideLaser_RealMode) | ||
| 131 | - { | ||
| 132 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 133 | - } | 103 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; |
| 134 | 104 | ||
| 135 | - if (status == JZ_FLAGCODE_OFF) | 105 | + if (tempStatus == JZ_FLAGCODE_OFF) |
| 136 | { | 106 | { |
| 137 | - status = JZ_FLAGCODE_ON; | 107 | + tempStatus = JZ_FLAGCODE_ON; |
| 138 | SideLaser_RealCotrol(0,JZ_FLAGCODE_ON); | 108 | SideLaser_RealCotrol(0,JZ_FLAGCODE_ON); |
| 139 | SideLaser_RealCotrol(1,JZ_FLAGCODE_OFF); | 109 | SideLaser_RealCotrol(1,JZ_FLAGCODE_OFF); |
| 140 | } | 110 | } |
| 141 | else | 111 | else |
| 142 | { | 112 | { |
| 143 | - status = JZ_FLAGCODE_OFF; | 113 | + tempStatus = JZ_FLAGCODE_OFF; |
| 144 | SideLaser_RealCotrol(0,JZ_FLAGCODE_OFF); | 114 | SideLaser_RealCotrol(0,JZ_FLAGCODE_OFF); |
| 145 | SideLaser_RealCotrol(1,JZ_FLAGCODE_ON); | 115 | SideLaser_RealCotrol(1,JZ_FLAGCODE_ON); |
| 146 | } | 116 | } |
| 147 | 117 | ||
| 148 | - delayMs(1000/SideLaser_Frequency); | 118 | + delayMs(1000/g_SideLaserInfo.Frequency); |
| 119 | + continue; | ||
| 120 | + } | ||
| 121 | + break; | ||
| 149 | 122 | ||
| 123 | + default: | ||
| 124 | + { | ||
| 125 | + SideLaser_RealCotrol(255, JZ_FLAGCODE_OFF); | ||
| 126 | + delayMs(10); | ||
| 150 | continue; | 127 | continue; |
| 151 | } | 128 | } |
| 152 | - | ||
| 153 | - default: | ||
| 154 | - break; | 129 | + break; |
| 155 | } | 130 | } |
| 156 | - | ||
| 157 | - delayMs(10); | ||
| 158 | - | ||
| 159 | - | ||
| 160 | } | 131 | } |
| 132 | + | ||
| 161 | #endif | 133 | #endif |
| 162 | 134 | ||
| 163 | #if DEVICE_VERSION == JZ_T40 | 135 | #if DEVICE_VERSION == JZ_T40 |
| 164 | - while(1) | 136 | + |
| 137 | + while (1) | ||
| 165 | { | 138 | { |
| 166 | - if (Last_LaserMode != g_SideLaser_RealMode) | 139 | + if (g_SideLaserInfo.status == JZ_FLAGCODE_OFF) |
| 167 | { | 140 | { |
| 168 | - Last_LaserMode = g_SideLaser_RealMode; | ||
| 169 | - | ||
| 170 | - if (g_SideLaser_RealMode == SIDE_LASER_OFF) | 141 | + if (LastSideLaserInfo.status != JZ_FLAGCODE_OFF) |
| 171 | { | 142 | { |
| 172 | HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_OFF); | 143 | HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_OFF); |
| 173 | } | 144 | } |
| 174 | - else | 145 | + |
| 146 | + LastSideLaserInfo.status = g_SideLaserInfo.status; | ||
| 147 | + delayMs(10); | ||
| 148 | + continue; | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + if (g_SideLaserInfo.status == JZ_FLAGCODE_ON) | ||
| 152 | + { | ||
| 153 | + if (LastSideLaserInfo.status != JZ_FLAGCODE_ON) | ||
| 175 | { | 154 | { |
| 176 | - int mode = g_SideLaser_RealMode - 1; | ||
| 177 | HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_ON); | 155 | HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_ON); |
| 178 | - HalSend_type1Send_SetLaserMode(UART_DEV_2, 0x20, mode); | ||
| 179 | } | 156 | } |
| 180 | - | 157 | + |
| 158 | + LastSideLaserInfo.status = g_SideLaserInfo.status; | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + if (g_SideLaserInfo.mode != LastSideLaserInfo.mode) | ||
| 162 | + { | ||
| 163 | + LastSideLaserInfo.mode = g_SideLaserInfo.mode; | ||
| 164 | + HalSend_type1Send_SetLaserMode(UART_DEV_2, 0x20, LastSideLaserInfo.mode); | ||
| 181 | } | 165 | } |
| 182 | 166 | ||
| 167 | + delayMs(10); | ||
| 183 | } | 168 | } |
| 184 | 169 | ||
| 185 | #endif | 170 | #endif |
| @@ -193,6 +178,11 @@ static void *SideLaserControl_task(void *arg) | @@ -193,6 +178,11 @@ static void *SideLaserControl_task(void *arg) | ||
| 193 | * *******************************/ | 178 | * *******************************/ |
| 194 | T_JZsdkReturnCode SideLaser_Init() | 179 | T_JZsdkReturnCode SideLaser_Init() |
| 195 | { | 180 | { |
| 181 | + | ||
| 182 | + g_SideLaserInfo.status = JZ_FLAGCODE_OFF; | ||
| 183 | + g_SideLaserInfo.mode = SIDE_LASER_GREEN_AWALYS_ON; | ||
| 184 | + g_SideLaserInfo.Frequency = 50; | ||
| 185 | + | ||
| 196 | pthread_t Task; | 186 | pthread_t Task; |
| 197 | pthread_attr_t task_attribute; //线程属性 | 187 | pthread_attr_t task_attribute; //线程属性 |
| 198 | pthread_attr_init(&task_attribute); //初始化线程属性 | 188 | pthread_attr_init(&task_attribute); //初始化线程属性 |
| @@ -256,19 +246,19 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | @@ -256,19 +246,19 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | ||
| 256 | { | 246 | { |
| 257 | case SIDELASER_REALMODE: | 247 | case SIDELASER_REALMODE: |
| 258 | { | 248 | { |
| 259 | - *value = g_SideLaser_RealMode; | 249 | + *value = g_SideLaserInfo.Uimode; |
| 260 | } | 250 | } |
| 261 | break; | 251 | break; |
| 262 | 252 | ||
| 263 | case SIDELASER_CONTROL: | 253 | case SIDELASER_CONTROL: |
| 264 | { | 254 | { |
| 265 | - *value = g_SideLaserControl; | 255 | + *value = g_SideLaserInfo.status; |
| 266 | } | 256 | } |
| 267 | break; | 257 | break; |
| 268 | 258 | ||
| 269 | case SIDELASER_MODE: | 259 | case SIDELASER_MODE: |
| 270 | { | 260 | { |
| 271 | - *value = g_SideLaserMode; | 261 | + *value = g_SideLaserInfo.mode; |
| 272 | } | 262 | } |
| 273 | 263 | ||
| 274 | default: | 264 | default: |
| @@ -286,35 +276,49 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | @@ -286,35 +276,49 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | ||
| 286 | { | 276 | { |
| 287 | case SIDELASER_CONTROL: | 277 | case SIDELASER_CONTROL: |
| 288 | { | 278 | { |
| 289 | - g_SideLaserControl = *value; | ||
| 290 | - JZSDK_LOG_INFO("设置激光控制值:%d",g_SideLaserControl); | ||
| 291 | - //从灯光的模式和控制计算得到实际控制值 | ||
| 292 | - if (g_SideLaserControl == JZ_FLAGCODE_OFF) | 279 | + JZSDK_LOG_INFO("设置激光控制值:%d",*value); |
| 280 | + g_SideLaserInfo.status = *value; | ||
| 281 | + if (*value == JZ_FLAGCODE_OFF) | ||
| 293 | { | 282 | { |
| 294 | - g_SideLaser_RealMode = SIDE_LASER_OFF; | 283 | + g_SideLaserInfo.Uimode = JZ_FLAGCODE_OFF; |
| 295 | } | 284 | } |
| 296 | else | 285 | else |
| 297 | { | 286 | { |
| 298 | - g_SideLaser_RealMode = g_SideLaserMode+1; | 287 | + g_SideLaserInfo.Uimode = g_SideLaserInfo.mode + 1; |
| 299 | } | 288 | } |
| 300 | } | 289 | } |
| 301 | break; | 290 | break; |
| 302 | 291 | ||
| 303 | case SIDELASER_MODE: | 292 | case SIDELASER_MODE: |
| 304 | { | 293 | { |
| 305 | - g_SideLaserMode = *value; | ||
| 306 | - JZSDK_LOG_INFO("设置激光模式值:%d",g_SideLaserMode); | ||
| 307 | - if (g_SideLaserControl == JZ_FLAGCODE_OFF) | 294 | + JZSDK_LOG_INFO("设置激光模式值:%d",*value); |
| 295 | + g_SideLaserInfo.mode = *value; | ||
| 296 | + if (g_SideLaserInfo.status == JZ_FLAGCODE_OFF) | ||
| 308 | { | 297 | { |
| 309 | - g_SideLaser_RealMode = SIDE_LASER_OFF; | 298 | + g_SideLaserInfo.Uimode = JZ_FLAGCODE_OFF; |
| 310 | } | 299 | } |
| 311 | else | 300 | else |
| 312 | { | 301 | { |
| 313 | - g_SideLaser_RealMode = g_SideLaserMode+1; | 302 | + g_SideLaserInfo.Uimode = g_SideLaserInfo.mode + 1; |
| 314 | } | 303 | } |
| 315 | } | 304 | } |
| 316 | break; | 305 | break; |
| 317 | 306 | ||
| 307 | + case SIDELASER_REALMODE: | ||
| 308 | + { | ||
| 309 | + if (*value == JZ_FLAGCODE_OFF) | ||
| 310 | + { | ||
| 311 | + g_SideLaserInfo.status = JZ_FLAGCODE_OFF; | ||
| 312 | + g_SideLaserInfo.Uimode = JZ_FLAGCODE_OFF; | ||
| 313 | + } | ||
| 314 | + else | ||
| 315 | + { | ||
| 316 | + g_SideLaserInfo.status = JZ_FLAGCODE_ON; | ||
| 317 | + g_SideLaserInfo.Uimode = JZ_FLAGCODE_ON; | ||
| 318 | + g_SideLaserInfo.mode = *value - 1; | ||
| 319 | + } | ||
| 320 | + } | ||
| 321 | + | ||
| 318 | default: | 322 | default: |
| 319 | { | 323 | { |
| 320 | *value = JZ_FLAGCODE_OFF; | 324 | *value = JZ_FLAGCODE_OFF; |
| @@ -327,4 +331,19 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | @@ -327,4 +331,19 @@ T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, i | ||
| 327 | 331 | ||
| 328 | JZSDK_LOG_ERROR("参数获取出错"); | 332 | JZSDK_LOG_ERROR("参数获取出错"); |
| 329 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 333 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
| 334 | +} | ||
| 335 | + | ||
| 336 | +/************************ | ||
| 337 | + * | ||
| 338 | + * 获取激光侧面信息 | ||
| 339 | + * | ||
| 340 | + * | ||
| 341 | + * ***********************/ | ||
| 342 | +T_JZsdkReturnCode SideLaser_getInfo(T_JZsdkSideLaserInfo *SideLaserInfo) | ||
| 343 | +{ | ||
| 344 | + SideLaserInfo->status = g_SideLaserInfo.status; | ||
| 345 | + SideLaserInfo->mode = g_SideLaserInfo.mode; | ||
| 346 | + SideLaserInfo->Frequency = g_SideLaserInfo.Frequency; | ||
| 347 | + | ||
| 348 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 330 | } | 349 | } |
| @@ -25,15 +25,14 @@ extern "C" { | @@ -25,15 +25,14 @@ extern "C" { | ||
| 25 | * 激光模式结构体 | 25 | * 激光模式结构体 |
| 26 | * | 26 | * |
| 27 | * **********/ | 27 | * **********/ |
| 28 | -typedef enum T_SideLaserMode | 28 | +typedef enum E_SideLaserMode |
| 29 | { | 29 | { |
| 30 | - SIDE_LASER_OFF = 0x0000, //关闭 | ||
| 31 | - SIDE_LASER_GREEN_AWALYS_ON = 0x0001, //绿色常亮 | ||
| 32 | - SIDE_LASER_RED_AWALYS_ON = 0x0002, //红色常亮 | ||
| 33 | - SIDE_LASER_GREEN_AND_RED_AWALYS_ON = 0x0003, //红绿常亮 | ||
| 34 | - SIDE_LASER_GREEN_ADD_RED_TOGETHER_FLICKER = 0x0004, //红绿齐闪 | ||
| 35 | - SIDE_LASER_GREEN_ADD_RED_ALTERNATION_FLICKER = 0x0005, //红绿交替闪 | ||
| 36 | -}T_SideLaserMode; | 30 | + SIDE_LASER_GREEN_AWALYS_ON = 0x00, //绿色常亮 |
| 31 | + SIDE_LASER_RED_AWALYS_ON = 0x01, //红色常亮 | ||
| 32 | + SIDE_LASER_GREEN_AND_RED_AWALYS_ON = 0x02, //红绿常亮 | ||
| 33 | + SIDE_LASER_GREEN_ADD_RED_TOGETHER_FLICKER = 0x03, //红绿齐闪 | ||
| 34 | + SIDE_LASER_GREEN_ADD_RED_ALTERNATION_FLICKER = 0x04, //红绿交替闪 | ||
| 35 | +}E_SideLaserMode; | ||
| 37 | 36 | ||
| 38 | 37 | ||
| 39 | /********* | 38 | /********* |
| @@ -48,11 +47,20 @@ typedef enum SideLaserParam | @@ -48,11 +47,20 @@ typedef enum SideLaserParam | ||
| 48 | SIDELASER_MODE = 0x000002, | 47 | SIDELASER_MODE = 0x000002, |
| 49 | }SideLaserParam; | 48 | }SideLaserParam; |
| 50 | 49 | ||
| 50 | + | ||
| 51 | +typedef struct T_JZsdkSideLaserInfo{ | ||
| 52 | + int status; | ||
| 53 | + E_SideLaserMode mode; | ||
| 54 | + int Frequency; | ||
| 55 | + int Uimode; //0 关闭 1~5就是 E_SideLaserMode | ||
| 56 | +}T_JZsdkSideLaserInfo; | ||
| 57 | + | ||
| 51 | /* Exported types ------------------------------------------------------------*/ | 58 | /* Exported types ------------------------------------------------------------*/ |
| 52 | 59 | ||
| 53 | /* Exported functions --------------------------------------------------------*/ | 60 | /* Exported functions --------------------------------------------------------*/ |
| 54 | T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, int *value); | 61 | T_JZsdkReturnCode SideLaser_param(int flagcode, enum SideLaserParam paramflag, int *value); |
| 55 | T_JZsdkReturnCode SideLaser_Init(); | 62 | T_JZsdkReturnCode SideLaser_Init(); |
| 63 | +T_JZsdkReturnCode SideLaser_getInfo(T_JZsdkSideLaserInfo *SideLaserInfo); | ||
| 56 | 64 | ||
| 57 | #ifdef __cplusplus | 65 | #ifdef __cplusplus |
| 58 | } | 66 | } |
Module/UI_control/Psdk_To_UI.c
已删除
100644 → 0
| 1 | -#include "Psdk_To_UI.h" | ||
| 2 | -#include "JZsdkLib.h" | ||
| 3 | -#include "UI_control/Psdk_Ui.h" | ||
| 4 | -#include "UI_control/UI_control.h" | ||
| 5 | - | ||
| 6 | -#include "version_choose.h" | ||
| 7 | - | ||
| 8 | -T_JZsdkReturnCode JZsdk_PsdkToUi_PlayLastSong() | ||
| 9 | -{ | ||
| 10 | - //1、将播放上一首歌曲的命令发送到UIcontrol | ||
| 11 | - UIcontrol_LastSong(DEVICE_PSDK); | ||
| 12 | - | ||
| 13 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -T_JZsdkReturnCode JZsdk_PsdkToUi_PlayNextSong() | ||
| 17 | -{ | ||
| 18 | - //1、将播放下一首歌曲的命令发送到UIcontrol | ||
| 19 | - UIcontrol_NextSong(DEVICE_PSDK); | ||
| 20 | - | ||
| 21 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -T_JZsdkReturnCode JZsdk_PsdkToUi_SetVolume(int volume) | ||
| 25 | -{ | ||
| 26 | - //1、将volume传递到所有的psdk ui (因为psdk有两个音量ui) | ||
| 27 | - JZsdk_UI_value_set(JZSDK_WIDGET_VOLUME, volume); | ||
| 28 | - | ||
| 29 | - //2、将音量控制值发送到UIcontrol 用于控制设备 | ||
| 30 | - UIcontrol_SetVolume(DEVICE_PSDK, volume, JZ_FLAGCODE_ON); | ||
| 31 | - | ||
| 32 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 33 | -} |
| @@ -39,9 +39,9 @@ int Get_UI_Widget_OpusRealTimeMode() | @@ -39,9 +39,9 @@ int Get_UI_Widget_OpusRealTimeMode() | ||
| 39 | #define AUTO_CONTROL 0x02 | 39 | #define AUTO_CONTROL 0x02 |
| 40 | 40 | ||
| 41 | 41 | ||
| 42 | -//警灯颜色 | ||
| 43 | -static int FirstWarningLight = 1; | ||
| 44 | -static int SecondWarningLight = 3; | 42 | +// //警灯颜色 |
| 43 | +// static int FirstWarningLight = 1; | ||
| 44 | +// static int SecondWarningLight = 3; | ||
| 45 | 45 | ||
| 46 | //探照灯模式 | 46 | //探照灯模式 |
| 47 | static int SearchLightMode = 0; | 47 | static int SearchLightMode = 0; |
| @@ -321,146 +321,81 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(int angle) | @@ -321,146 +321,81 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(int angle) | ||
| 321 | //------------------------------------------------------------------------------------------------------------------------------------------------- | 321 | //------------------------------------------------------------------------------------------------------------------------------------------------- |
| 322 | //------------------------------------------------------------------------------------------------------------------------------------------------- | 322 | //------------------------------------------------------------------------------------------------------------------------------------------------- |
| 323 | 323 | ||
| 324 | -// psdk上一曲 | ||
| 325 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_LastSong(int wheather_control) | ||
| 326 | -{ | ||
| 327 | - T_JZsdkReturnCode ret; | ||
| 328 | - | ||
| 329 | - // 开启实时喊话时,锁定该功能 | ||
| 330 | - if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 331 | - { | ||
| 332 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 333 | - } | ||
| 334 | - | ||
| 335 | - // 将控件界面的播放开关打开 | ||
| 336 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | ||
| 337 | - | ||
| 338 | - // 将ttsSpeaker的开关关闭 | ||
| 339 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 340 | - | ||
| 341 | - // 如果有进行控制,不只是改控件 | ||
| 342 | - if (wheather_control == 1) | ||
| 343 | - { | ||
| 344 | - ret = UIcontrol_LastSong(DEVICE_PSDK); | ||
| 345 | - return ret; | ||
| 346 | - } | ||
| 347 | -} | ||
| 348 | -// psdk下一曲 | ||
| 349 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_NextSong(int wheather_control) | ||
| 350 | -{ | ||
| 351 | - T_JZsdkReturnCode ret; | ||
| 352 | - | ||
| 353 | - // 开启实时喊话时,锁定该功能 | ||
| 354 | - if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 355 | - { | ||
| 356 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 357 | - } | ||
| 358 | - | ||
| 359 | - // 将控件界面的播放开关打开 | ||
| 360 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | ||
| 361 | - | ||
| 362 | - // 将ttsSpeaker的开关关闭 | ||
| 363 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 364 | - | ||
| 365 | - // 如果有进行控制,不只是改控件 | ||
| 366 | - if (wheather_control == 1) | ||
| 367 | - { | ||
| 368 | - ret = UIcontrol_NextSong(DEVICE_PSDK); | ||
| 369 | - return ret; | ||
| 370 | - } | ||
| 371 | -} | ||
| 372 | - | ||
| 373 | -// psdk播放当前歌曲 | ||
| 374 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_PlaySong(int wheather_control) | ||
| 375 | -{ | ||
| 376 | - T_JZsdkReturnCode ret; | ||
| 377 | - | ||
| 378 | - // 开启实时喊话时,锁定该功能 | ||
| 379 | - if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 380 | - { | ||
| 381 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 382 | - } | ||
| 383 | - | ||
| 384 | - char MusicName[256]; | ||
| 385 | - int MusicNameLen; | ||
| 386 | - | ||
| 387 | - // 将控件界面的播放开关打开 | ||
| 388 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | 324 | +// // psdk下一曲 |
| 325 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_NextSong(int wheather_control) | ||
| 326 | +// { | ||
| 327 | +// T_JZsdkReturnCode ret; | ||
| 328 | + | ||
| 329 | +// // 开启实时喊话时,锁定该功能 | ||
| 330 | +// if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 331 | +// { | ||
| 332 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 333 | +// } | ||
| 334 | + | ||
| 335 | +// // 将控件界面的播放开关打开 | ||
| 336 | +// UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | ||
| 337 | + | ||
| 338 | +// // 将ttsSpeaker的开关关闭 | ||
| 339 | +// UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 340 | + | ||
| 341 | +// // 如果有进行控制,不只是改控件 | ||
| 342 | +// if (wheather_control == 1) | ||
| 343 | +// { | ||
| 344 | +// ret = UIcontrol_NextSong(DEVICE_PSDK); | ||
| 345 | +// return ret; | ||
| 346 | +// } | ||
| 347 | +// } | ||
| 348 | + | ||
| 349 | +// // psdk播放当前歌曲 | ||
| 350 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_PlaySong(int wheather_control) | ||
| 351 | +// { | ||
| 352 | +// T_JZsdkReturnCode ret; | ||
| 353 | + | ||
| 354 | +// // 开启实时喊话时,锁定该功能 | ||
| 355 | +// if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 356 | +// { | ||
| 357 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 358 | +// } | ||
| 359 | + | ||
| 360 | +// char MusicName[256]; | ||
| 361 | +// int MusicNameLen; | ||
| 362 | + | ||
| 363 | +// // 将控件界面的播放开关打开 | ||
| 364 | +// UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | ||
| 389 | 365 | ||
| 390 | - // 将ttsSpeaker的开关关闭 | ||
| 391 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 392 | - | ||
| 393 | - // 如果有进行控制,不只是改控件 | ||
| 394 | - if (wheather_control == 1) | ||
| 395 | - { | ||
| 396 | -#ifdef MEGAPHONE_CONFIG_STATUS_ON | ||
| 397 | - // 获取当前播放的歌曲名字 | ||
| 398 | - Megaphone_get_play_FileName(MusicName, &MusicNameLen); | ||
| 399 | - | ||
| 400 | - // 播放歌曲 | ||
| 401 | - ret = UIcontrol_PlayAudioFile(DEVICE_PSDK,MusicName, MusicNameLen); | ||
| 402 | - return ret; | ||
| 403 | -#endif | ||
| 404 | - } | ||
| 405 | -} | ||
| 406 | - | ||
| 407 | -// psdk 音频 继续播放/暂停 | ||
| 408 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Audio_PauseAndPlayContinue(int wheather_control, int value) | ||
| 409 | -{ | ||
| 410 | - // 开启实时喊话时,锁定该功能 | ||
| 411 | - if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 412 | - { | ||
| 413 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, value); | ||
| 414 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 415 | - } | ||
| 416 | - | ||
| 417 | - if (value == JZ_FLAGCODE_ON) | ||
| 418 | - { | ||
| 419 | - // 将控件界面的播放开关 转化为打开 | ||
| 420 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 0); | ||
| 421 | - | ||
| 422 | - // 将ttsSpeaker的开关关闭 | ||
| 423 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 424 | - | ||
| 425 | - // 如果有进行控制,不只是改控件 | ||
| 426 | - if (wheather_control == 1) | ||
| 427 | - { | ||
| 428 | - return UIcontrol_ContinuePlayAudio(DEVICE_PSDK); | ||
| 429 | - } | ||
| 430 | - } | ||
| 431 | - else if (value == JZ_FLAGCODE_OFF) | ||
| 432 | - { | ||
| 433 | - // 将控件界面的播放开关 转化为关闭 | ||
| 434 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1); | ||
| 435 | - | ||
| 436 | - // 将ttsSpeaker的开关关闭 | ||
| 437 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 438 | - | ||
| 439 | - // 如果有进行控制,不只是改控件 | ||
| 440 | - if (wheather_control == 1) | ||
| 441 | - { | ||
| 442 | - return UIcontrol_PausePlayAudio(DEVICE_PSDK); | ||
| 443 | - } | ||
| 444 | - } | ||
| 445 | - | ||
| 446 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 447 | -} | ||
| 448 | - | ||
| 449 | -// 关闭喊话器所有音频 | ||
| 450 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_StopPlayAudio() | ||
| 451 | -{ | ||
| 452 | - // 开启实时喊话时,锁定该功能 | ||
| 453 | - if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 454 | - { | ||
| 455 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 456 | - } | ||
| 457 | - | ||
| 458 | - UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1); | ||
| 459 | - UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS,0); | ||
| 460 | - T_JZsdkReturnCode ret; | ||
| 461 | - ret = UIcontrol_StopPlayAudio(DEVICE_PSDK); | ||
| 462 | - return ret; | ||
| 463 | -} | 366 | +// // 将ttsSpeaker的开关关闭 |
| 367 | +// UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0); | ||
| 368 | + | ||
| 369 | +// // 如果有进行控制,不只是改控件 | ||
| 370 | +// if (wheather_control == 1) | ||
| 371 | +// { | ||
| 372 | +// #ifdef MEGAPHONE_CONFIG_STATUS_ON | ||
| 373 | +// // 获取当前播放的歌曲名字 | ||
| 374 | +// Megaphone_get_play_FileName(MusicName, &MusicNameLen); | ||
| 375 | + | ||
| 376 | +// // 播放歌曲 | ||
| 377 | +// ret = UIcontrol_PlayAudioFile(DEVICE_PSDK,MusicName, MusicNameLen); | ||
| 378 | +// return ret; | ||
| 379 | +// #endif | ||
| 380 | +// } | ||
| 381 | +// } | ||
| 382 | + | ||
| 383 | + | ||
| 384 | +// // 关闭喊话器所有音频 | ||
| 385 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_StopPlayAudio() | ||
| 386 | +// { | ||
| 387 | +// // 开启实时喊话时,锁定该功能 | ||
| 388 | +// if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 389 | +// { | ||
| 390 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 391 | +// } | ||
| 392 | + | ||
| 393 | +// UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1); | ||
| 394 | +// UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS,0); | ||
| 395 | +// T_JZsdkReturnCode ret; | ||
| 396 | +// ret = UIcontrol_StopPlayAudio(DEVICE_PSDK); | ||
| 397 | +// return ret; | ||
| 398 | +// } | ||
| 464 | 399 | ||
| 465 | 400 | ||
| 466 | /********* | 401 | /********* |
| @@ -519,283 +454,283 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetVolume(int wheather_control, int value) | @@ -519,283 +454,283 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetVolume(int wheather_control, int value) | ||
| 519 | } | 454 | } |
| 520 | } | 455 | } |
| 521 | 456 | ||
| 522 | -//psdk 变量获取tts语速 | ||
| 523 | -int JZsdk_Psdk_UI_io_GetTTSSpeed_ByValue(int value) | ||
| 524 | -{ | ||
| 525 | - switch (value) | ||
| 526 | - { | ||
| 527 | - case 0: | ||
| 528 | - return 25; | ||
| 529 | - break; | ||
| 530 | - case 1: | ||
| 531 | - return 50; | ||
| 532 | - break; | ||
| 533 | - case 2: | ||
| 534 | - return 75; | ||
| 535 | - break; | ||
| 536 | - case 3: | ||
| 537 | - return 100; | ||
| 538 | - break; | ||
| 539 | - default: | ||
| 540 | - break; | ||
| 541 | - } | ||
| 542 | -} | ||
| 543 | - | ||
| 544 | -// psdkTTS语速 0-100 25 50 75 100 | ||
| 545 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_speed(int wheather_control, int speed) | ||
| 546 | -{ | ||
| 547 | - T_JZsdkReturnCode ret; | ||
| 548 | - int value; | ||
| 549 | - | ||
| 550 | - if (speed >=0 && speed <=25 ) | ||
| 551 | - { | ||
| 552 | - value = 0; | ||
| 553 | - } | ||
| 554 | - else if (speed > 25 && speed <= 50) | ||
| 555 | - { | ||
| 556 | - value = 1; | ||
| 557 | - } | ||
| 558 | - else if (speed > 50 && speed <= 75) | ||
| 559 | - { | ||
| 560 | - value = 2; | ||
| 561 | - } | ||
| 562 | - else if (speed > 75 && speed <= 100) | ||
| 563 | - { | ||
| 564 | - value = 3; | ||
| 565 | - } | 457 | +// //psdk 变量获取tts语速 |
| 458 | +// int JZsdk_Psdk_UI_io_GetTTSSpeed_ByValue(int value) | ||
| 459 | +// { | ||
| 460 | +// switch (value) | ||
| 461 | +// { | ||
| 462 | +// case 0: | ||
| 463 | +// return 25; | ||
| 464 | +// break; | ||
| 465 | +// case 1: | ||
| 466 | +// return 50; | ||
| 467 | +// break; | ||
| 468 | +// case 2: | ||
| 469 | +// return 75; | ||
| 470 | +// break; | ||
| 471 | +// case 3: | ||
| 472 | +// return 100; | ||
| 473 | +// break; | ||
| 474 | +// default: | ||
| 475 | +// break; | ||
| 476 | +// } | ||
| 477 | +// } | ||
| 478 | + | ||
| 479 | +// // psdkTTS语速 0-100 25 50 75 100 | ||
| 480 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_speed(int wheather_control, int speed) | ||
| 481 | +// { | ||
| 482 | +// T_JZsdkReturnCode ret; | ||
| 483 | +// int value; | ||
| 484 | + | ||
| 485 | +// if (speed >=0 && speed <=25 ) | ||
| 486 | +// { | ||
| 487 | +// value = 0; | ||
| 488 | +// } | ||
| 489 | +// else if (speed > 25 && speed <= 50) | ||
| 490 | +// { | ||
| 491 | +// value = 1; | ||
| 492 | +// } | ||
| 493 | +// else if (speed > 50 && speed <= 75) | ||
| 494 | +// { | ||
| 495 | +// value = 2; | ||
| 496 | +// } | ||
| 497 | +// else if (speed > 75 && speed <= 100) | ||
| 498 | +// { | ||
| 499 | +// value = 3; | ||
| 500 | +// } | ||
| 566 | 501 | ||
| 567 | - // 调整控件 | ||
| 568 | - UI_control_WidgetSet(PSDK_UI_WIDGET_SPEED, value); | ||
| 569 | - | ||
| 570 | - // 如果有进行控制,不只是改控件 | ||
| 571 | - if (wheather_control == 1) | ||
| 572 | - { | ||
| 573 | - ret = UIcontrol_Set_TTS_speed(DEVICE_PSDK, speed); | ||
| 574 | - return ret; | ||
| 575 | - } | ||
| 576 | -} | ||
| 577 | - | ||
| 578 | - | ||
| 579 | -//psdk 变量获取tts音色 | ||
| 580 | -int JZsdk_Psdk_UI_io_GetTTSTone_ByValue(int value) | ||
| 581 | -{ | ||
| 582 | - E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 583 | - if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 584 | - { | ||
| 585 | - switch (value) | ||
| 586 | - { | ||
| 587 | - case 0: | ||
| 588 | - return 0x01; | ||
| 589 | - break; | ||
| 590 | - case 1: | ||
| 591 | - return 0x02; | ||
| 592 | - break; | ||
| 593 | - case 2: | ||
| 594 | - return 0x11; | ||
| 595 | - break; | ||
| 596 | - case 3: | ||
| 597 | - return 0x12; | ||
| 598 | - break; | ||
| 599 | - case 4: | ||
| 600 | - return 0x31; | ||
| 601 | - break; | ||
| 602 | - case 5: | ||
| 603 | - return 0x32; | ||
| 604 | - break; | ||
| 605 | - case 6: | ||
| 606 | - return 0x33; | ||
| 607 | - break; | ||
| 608 | - case 7: | ||
| 609 | - return 0x34; | ||
| 610 | - break; | ||
| 611 | - case 8: | ||
| 612 | - return 0x35; | ||
| 613 | - break; | ||
| 614 | - case 9: | ||
| 615 | - return 0x36; | ||
| 616 | - break; | ||
| 617 | - default: | ||
| 618 | - return 0x01; | ||
| 619 | - break; | ||
| 620 | - } | ||
| 621 | - | ||
| 622 | - } | 502 | +// // 调整控件 |
| 503 | +// UI_control_WidgetSet(PSDK_UI_WIDGET_SPEED, value); | ||
| 504 | + | ||
| 505 | +// // 如果有进行控制,不只是改控件 | ||
| 506 | +// if (wheather_control == 1) | ||
| 507 | +// { | ||
| 508 | +// ret = UIcontrol_Set_TTS_speed(DEVICE_PSDK, speed); | ||
| 509 | +// return ret; | ||
| 510 | +// } | ||
| 511 | +// } | ||
| 512 | + | ||
| 513 | + | ||
| 514 | +// //psdk 变量获取tts音色 | ||
| 515 | +// int JZsdk_Psdk_UI_io_GetTTSTone_ByValue(int value) | ||
| 516 | +// { | ||
| 517 | +// E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 518 | +// if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 519 | +// { | ||
| 520 | +// switch (value) | ||
| 521 | +// { | ||
| 522 | +// case 0: | ||
| 523 | +// return 0x01; | ||
| 524 | +// break; | ||
| 525 | +// case 1: | ||
| 526 | +// return 0x02; | ||
| 527 | +// break; | ||
| 528 | +// case 2: | ||
| 529 | +// return 0x11; | ||
| 530 | +// break; | ||
| 531 | +// case 3: | ||
| 532 | +// return 0x12; | ||
| 533 | +// break; | ||
| 534 | +// case 4: | ||
| 535 | +// return 0x31; | ||
| 536 | +// break; | ||
| 537 | +// case 5: | ||
| 538 | +// return 0x32; | ||
| 539 | +// break; | ||
| 540 | +// case 6: | ||
| 541 | +// return 0x33; | ||
| 542 | +// break; | ||
| 543 | +// case 7: | ||
| 544 | +// return 0x34; | ||
| 545 | +// break; | ||
| 546 | +// case 8: | ||
| 547 | +// return 0x35; | ||
| 548 | +// break; | ||
| 549 | +// case 9: | ||
| 550 | +// return 0x36; | ||
| 551 | +// break; | ||
| 552 | +// default: | ||
| 553 | +// return 0x01; | ||
| 554 | +// break; | ||
| 555 | +// } | ||
| 556 | + | ||
| 557 | +// } | ||
| 623 | 558 | ||
| 624 | - else | ||
| 625 | - { | ||
| 626 | - switch (value) | ||
| 627 | - { | ||
| 628 | - case 0: | ||
| 629 | - return 0x11; | ||
| 630 | - break; | ||
| 631 | - case 1: | ||
| 632 | - return 0x12; | ||
| 633 | - break; | ||
| 634 | - case 2: | ||
| 635 | - return 0x01; | ||
| 636 | - break; | ||
| 637 | - case 3: | ||
| 638 | - return 0x02; | ||
| 639 | - break; | ||
| 640 | - case 4: | ||
| 641 | - return 0x41; | ||
| 642 | - break; | ||
| 643 | - case 5: | ||
| 644 | - return 0x42; | ||
| 645 | - break; | ||
| 646 | - case 6: | ||
| 647 | - return 0x43; | ||
| 648 | - break; | ||
| 649 | - case 7: | ||
| 650 | - return 0x44; | ||
| 651 | - break; | ||
| 652 | - case 8: | ||
| 653 | - return 0x45; | ||
| 654 | - break; | ||
| 655 | - case 9: | ||
| 656 | - return 0x46; | ||
| 657 | - break; | ||
| 658 | - case 10: | ||
| 659 | - return 0x47; | ||
| 660 | - break; | ||
| 661 | - case 11: | ||
| 662 | - return 0x48; | ||
| 663 | - break; | 559 | +// else |
| 560 | +// { | ||
| 561 | +// switch (value) | ||
| 562 | +// { | ||
| 563 | +// case 0: | ||
| 564 | +// return 0x11; | ||
| 565 | +// break; | ||
| 566 | +// case 1: | ||
| 567 | +// return 0x12; | ||
| 568 | +// break; | ||
| 569 | +// case 2: | ||
| 570 | +// return 0x01; | ||
| 571 | +// break; | ||
| 572 | +// case 3: | ||
| 573 | +// return 0x02; | ||
| 574 | +// break; | ||
| 575 | +// case 4: | ||
| 576 | +// return 0x41; | ||
| 577 | +// break; | ||
| 578 | +// case 5: | ||
| 579 | +// return 0x42; | ||
| 580 | +// break; | ||
| 581 | +// case 6: | ||
| 582 | +// return 0x43; | ||
| 583 | +// break; | ||
| 584 | +// case 7: | ||
| 585 | +// return 0x44; | ||
| 586 | +// break; | ||
| 587 | +// case 8: | ||
| 588 | +// return 0x45; | ||
| 589 | +// break; | ||
| 590 | +// case 9: | ||
| 591 | +// return 0x46; | ||
| 592 | +// break; | ||
| 593 | +// case 10: | ||
| 594 | +// return 0x47; | ||
| 595 | +// break; | ||
| 596 | +// case 11: | ||
| 597 | +// return 0x48; | ||
| 598 | +// break; | ||
| 664 | 599 | ||
| 665 | - default: | ||
| 666 | - return 0x11; | ||
| 667 | - break; | ||
| 668 | - } | ||
| 669 | - } | 600 | +// default: |
| 601 | +// return 0x11; | ||
| 602 | +// break; | ||
| 603 | +// } | ||
| 604 | +// } | ||
| 670 | 605 | ||
| 671 | -} | ||
| 672 | - | ||
| 673 | -// psdkTTS音色 10个音色 | ||
| 674 | -// 要分国内版和海外版 | ||
| 675 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_tone(int wheather_control, int tone) | ||
| 676 | -{ | ||
| 677 | - | ||
| 678 | - T_JZsdkReturnCode ret; | ||
| 679 | - int value; | ||
| 680 | - E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 681 | - if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 682 | - { | ||
| 683 | - switch (tone) | ||
| 684 | - { | ||
| 685 | - case 0x01: | ||
| 686 | - value = 0; | ||
| 687 | - break; | ||
| 688 | - | ||
| 689 | - case 0x02: | ||
| 690 | - value = 1; | ||
| 691 | - break; | ||
| 692 | - | ||
| 693 | - case 0x11: | ||
| 694 | - value = 2; | ||
| 695 | - break; | ||
| 696 | - | ||
| 697 | - case 0x12: | ||
| 698 | - value = 3; | ||
| 699 | - break; | ||
| 700 | - | ||
| 701 | - case 0x31: | ||
| 702 | - value = 4; | ||
| 703 | - break; | ||
| 704 | - | ||
| 705 | - case 0x32: | ||
| 706 | - value = 5; | ||
| 707 | - break; | ||
| 708 | - | ||
| 709 | - case 0x33: | ||
| 710 | - value = 6; | ||
| 711 | - break; | ||
| 712 | - | ||
| 713 | - case 0x34: | ||
| 714 | - value = 7; | ||
| 715 | - break; | ||
| 716 | - | ||
| 717 | - case 0x35: | ||
| 718 | - value = 8; | ||
| 719 | - break; | ||
| 720 | - | ||
| 721 | - case 0x36: | ||
| 722 | - value = 9; | ||
| 723 | - break; | ||
| 724 | - | ||
| 725 | - default: | ||
| 726 | - printf("无效的tts设置\n"); | ||
| 727 | - return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 728 | - break; | ||
| 729 | - } | ||
| 730 | - } | ||
| 731 | - else { | ||
| 732 | - switch (tone) | ||
| 733 | - { | ||
| 734 | - case 0x01: | ||
| 735 | - value = 2; | ||
| 736 | - break; | ||
| 737 | - | ||
| 738 | - case 0x02: | ||
| 739 | - value = 3; | ||
| 740 | - break; | ||
| 741 | - | ||
| 742 | - case 0x11: | ||
| 743 | - value = 0; | ||
| 744 | - break; | ||
| 745 | - | ||
| 746 | - case 0x12: | ||
| 747 | - value = 1; | ||
| 748 | - break; | ||
| 749 | - | ||
| 750 | - case 0x41://俄 russian ru | ||
| 751 | - value = 4; | ||
| 752 | - break; | ||
| 753 | - | ||
| 754 | - case 0x42://法 french fr-fr | ||
| 755 | - value = 5; | ||
| 756 | - break; | ||
| 757 | - | ||
| 758 | - case 0x43://德 german de | ||
| 759 | - value = 6; | ||
| 760 | - break; | ||
| 761 | - | ||
| 762 | - case 0x44://韩 ko | ||
| 763 | - value = 7; | ||
| 764 | - break; | ||
| 765 | - | ||
| 766 | - case 0x45://意大利 italian it | ||
| 767 | - value = 8; | ||
| 768 | - break; | ||
| 769 | - | ||
| 770 | - case 0x46://波兰 polish pl | ||
| 771 | - value = 9; | ||
| 772 | - break; | ||
| 773 | - | ||
| 774 | - case 0x47://西班牙 spanish es | ||
| 775 | - value = 10; | ||
| 776 | - break; | ||
| 777 | - | ||
| 778 | - case 0x48://葡萄牙 portugal pt-pt | ||
| 779 | - value = 11; | ||
| 780 | - break; | ||
| 781 | - | ||
| 782 | - default: | ||
| 783 | - printf("无效的tts设置\n"); | ||
| 784 | - return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 785 | - break; | ||
| 786 | - } | ||
| 787 | - } | ||
| 788 | - // 将控件界面的播放开关 转化为关闭 | ||
| 789 | - ret = UI_control_WidgetSet(PSDK_UI_WIDGET_TONE, value); | ||
| 790 | - | ||
| 791 | - // 如果有进行控制,不只是改控件 | ||
| 792 | - if (wheather_control == 1) | ||
| 793 | - { | ||
| 794 | - return UIcontrol_Set_TTS_tone(DEVICE_PSDK,tone); | ||
| 795 | - } | ||
| 796 | - | ||
| 797 | - return ret; | ||
| 798 | -} | 606 | +// } |
| 607 | + | ||
| 608 | +// // psdkTTS音色 10个音色 | ||
| 609 | +// // 要分国内版和海外版 | ||
| 610 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_tone(int wheather_control, int tone) | ||
| 611 | +// { | ||
| 612 | + | ||
| 613 | +// T_JZsdkReturnCode ret; | ||
| 614 | +// int value; | ||
| 615 | +// E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 616 | +// if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 617 | +// { | ||
| 618 | +// switch (tone) | ||
| 619 | +// { | ||
| 620 | +// case 0x01: | ||
| 621 | +// value = 0; | ||
| 622 | +// break; | ||
| 623 | + | ||
| 624 | +// case 0x02: | ||
| 625 | +// value = 1; | ||
| 626 | +// break; | ||
| 627 | + | ||
| 628 | +// case 0x11: | ||
| 629 | +// value = 2; | ||
| 630 | +// break; | ||
| 631 | + | ||
| 632 | +// case 0x12: | ||
| 633 | +// value = 3; | ||
| 634 | +// break; | ||
| 635 | + | ||
| 636 | +// case 0x31: | ||
| 637 | +// value = 4; | ||
| 638 | +// break; | ||
| 639 | + | ||
| 640 | +// case 0x32: | ||
| 641 | +// value = 5; | ||
| 642 | +// break; | ||
| 643 | + | ||
| 644 | +// case 0x33: | ||
| 645 | +// value = 6; | ||
| 646 | +// break; | ||
| 647 | + | ||
| 648 | +// case 0x34: | ||
| 649 | +// value = 7; | ||
| 650 | +// break; | ||
| 651 | + | ||
| 652 | +// case 0x35: | ||
| 653 | +// value = 8; | ||
| 654 | +// break; | ||
| 655 | + | ||
| 656 | +// case 0x36: | ||
| 657 | +// value = 9; | ||
| 658 | +// break; | ||
| 659 | + | ||
| 660 | +// default: | ||
| 661 | +// printf("无效的tts设置\n"); | ||
| 662 | +// return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 663 | +// break; | ||
| 664 | +// } | ||
| 665 | +// } | ||
| 666 | +// else { | ||
| 667 | +// switch (tone) | ||
| 668 | +// { | ||
| 669 | +// case 0x01: | ||
| 670 | +// value = 2; | ||
| 671 | +// break; | ||
| 672 | + | ||
| 673 | +// case 0x02: | ||
| 674 | +// value = 3; | ||
| 675 | +// break; | ||
| 676 | + | ||
| 677 | +// case 0x11: | ||
| 678 | +// value = 0; | ||
| 679 | +// break; | ||
| 680 | + | ||
| 681 | +// case 0x12: | ||
| 682 | +// value = 1; | ||
| 683 | +// break; | ||
| 684 | + | ||
| 685 | +// case 0x41://俄 russian ru | ||
| 686 | +// value = 4; | ||
| 687 | +// break; | ||
| 688 | + | ||
| 689 | +// case 0x42://法 french fr-fr | ||
| 690 | +// value = 5; | ||
| 691 | +// break; | ||
| 692 | + | ||
| 693 | +// case 0x43://德 german de | ||
| 694 | +// value = 6; | ||
| 695 | +// break; | ||
| 696 | + | ||
| 697 | +// case 0x44://韩 ko | ||
| 698 | +// value = 7; | ||
| 699 | +// break; | ||
| 700 | + | ||
| 701 | +// case 0x45://意大利 italian it | ||
| 702 | +// value = 8; | ||
| 703 | +// break; | ||
| 704 | + | ||
| 705 | +// case 0x46://波兰 polish pl | ||
| 706 | +// value = 9; | ||
| 707 | +// break; | ||
| 708 | + | ||
| 709 | +// case 0x47://西班牙 spanish es | ||
| 710 | +// value = 10; | ||
| 711 | +// break; | ||
| 712 | + | ||
| 713 | +// case 0x48://葡萄牙 portugal pt-pt | ||
| 714 | +// value = 11; | ||
| 715 | +// break; | ||
| 716 | + | ||
| 717 | +// default: | ||
| 718 | +// printf("无效的tts设置\n"); | ||
| 719 | +// return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 720 | +// break; | ||
| 721 | +// } | ||
| 722 | +// } | ||
| 723 | +// // 将控件界面的播放开关 转化为关闭 | ||
| 724 | +// ret = UI_control_WidgetSet(PSDK_UI_WIDGET_TONE, value); | ||
| 725 | + | ||
| 726 | +// // 如果有进行控制,不只是改控件 | ||
| 727 | +// if (wheather_control == 1) | ||
| 728 | +// { | ||
| 729 | +// return UIcontrol_Set_TTS_tone(DEVICE_PSDK,tone); | ||
| 730 | +// } | ||
| 731 | + | ||
| 732 | +// return ret; | ||
| 733 | +// } | ||
| 799 | 734 | ||
| 800 | // psdk追加音色 0 1 2 | 735 | // psdk追加音色 0 1 2 |
| 801 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_AppendTone(int wheather_control, int value) | 736 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_AppendTone(int wheather_control, int value) |
| @@ -1063,69 +998,69 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_SearchLightLumen(int wheather_control,int | @@ -1063,69 +998,69 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_SearchLightLumen(int wheather_control,int | ||
| 1063 | return ret; | 998 | return ret; |
| 1064 | } | 999 | } |
| 1065 | 1000 | ||
| 1066 | -//警灯模式 0 关 1交替快闪 2交替满闪 3交替齐闪 | ||
| 1067 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightMode(int wheather_control, int value) | ||
| 1068 | -{ | ||
| 1069 | - T_JZsdkReturnCode ret; | 1001 | +// //警灯模式 0 关 1交替快闪 2交替满闪 3交替齐闪 |
| 1002 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightMode(int wheather_control, int value) | ||
| 1003 | +// { | ||
| 1004 | +// T_JZsdkReturnCode ret; | ||
| 1070 | 1005 | ||
| 1071 | - //控件值 0 关闭 1快闪 2 满闪 3齐闪 | ||
| 1072 | - | ||
| 1073 | - int mode = 0; | ||
| 1074 | - int Switch = 0; | ||
| 1075 | - if (value >= 1) | ||
| 1076 | - { | ||
| 1077 | - mode = value - 1; | ||
| 1078 | - Switch = 1; | ||
| 1079 | - } | ||
| 1080 | - else | ||
| 1081 | - { | ||
| 1082 | - Switch = 0; | ||
| 1083 | - mode = 0; | ||
| 1084 | - } | 1006 | +// //控件值 0 关闭 1快闪 2 满闪 3齐闪 |
| 1007 | + | ||
| 1008 | +// int mode = 0; | ||
| 1009 | +// int Switch = 0; | ||
| 1010 | +// if (value >= 1) | ||
| 1011 | +// { | ||
| 1012 | +// mode = value - 1; | ||
| 1013 | +// Switch = 1; | ||
| 1014 | +// } | ||
| 1015 | +// else | ||
| 1016 | +// { | ||
| 1017 | +// Switch = 0; | ||
| 1018 | +// mode = 0; | ||
| 1019 | +// } | ||
| 1085 | 1020 | ||
| 1086 | - ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_MODE, value); | 1021 | +// ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_MODE, value); |
| 1087 | 1022 | ||
| 1088 | - if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1089 | - { | ||
| 1090 | - ret = UIcontrol_Set_WarningLight_ModeControl(DEVICE_PSDK, Switch, mode); | ||
| 1091 | - } | 1023 | +// if (wheather_control == JZ_FLAGCODE_ON) |
| 1024 | +// { | ||
| 1025 | +// ret = UIcontrol_Set_WarningLight_ModeControl(DEVICE_PSDK, Switch, mode); | ||
| 1026 | +// } | ||
| 1092 | 1027 | ||
| 1093 | - return ret; | ||
| 1094 | -} | 1028 | +// return ret; |
| 1029 | +// } | ||
| 1095 | 1030 | ||
| 1096 | -//警灯颜色1 | ||
| 1097 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(int wheather_control, int value) | ||
| 1098 | -{ | ||
| 1099 | - T_JZsdkReturnCode ret; | 1031 | +// //警灯颜色1 |
| 1032 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(int wheather_control, int value) | ||
| 1033 | +// { | ||
| 1034 | +// T_JZsdkReturnCode ret; | ||
| 1100 | 1035 | ||
| 1101 | - ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_FIRSTCOLOR, (value-1)); | 1036 | +// ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_FIRSTCOLOR, (value-1)); |
| 1102 | 1037 | ||
| 1103 | - FirstWarningLight = value; | 1038 | +// FirstWarningLight = value; |
| 1104 | 1039 | ||
| 1105 | - if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1106 | - { | ||
| 1107 | - ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 1108 | - } | 1040 | +// if (wheather_control == JZ_FLAGCODE_ON) |
| 1041 | +// { | ||
| 1042 | +// ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 1043 | +// } | ||
| 1109 | 1044 | ||
| 1110 | - return ret; | ||
| 1111 | -} | 1045 | +// return ret; |
| 1046 | +// } | ||
| 1112 | 1047 | ||
| 1113 | -//警灯颜色2 | ||
| 1114 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(int wheather_control, int value) | ||
| 1115 | -{ | ||
| 1116 | - T_JZsdkReturnCode ret; | 1048 | +// //警灯颜色2 |
| 1049 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(int wheather_control, int value) | ||
| 1050 | +// { | ||
| 1051 | +// T_JZsdkReturnCode ret; | ||
| 1117 | 1052 | ||
| 1118 | - ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_SECONDCOLOR, (value-1)); | 1053 | +// ret = UI_control_WidgetSet(PSDK_UI_WIDGET_WARNINGLIGHT_SECONDCOLOR, (value-1)); |
| 1119 | 1054 | ||
| 1120 | - SecondWarningLight = value; | 1055 | +// SecondWarningLight = value; |
| 1121 | 1056 | ||
| 1122 | - if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1123 | - { | ||
| 1124 | - ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 1125 | - } | 1057 | +// if (wheather_control == JZ_FLAGCODE_ON) |
| 1058 | +// { | ||
| 1059 | +// ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 1060 | +// } | ||
| 1126 | 1061 | ||
| 1127 | - return ret; | ||
| 1128 | -} | 1062 | +// return ret; |
| 1063 | +// } | ||
| 1129 | 1064 | ||
| 1130 | // 设置云台最大值 | 1065 | // 设置云台最大值 |
| 1131 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_MAXGimbalRangen() | 1066 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_MAXGimbalRangen() |
| @@ -1639,31 +1574,31 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_IrcMarkLowAndHighTemp(int wheather_ChangeWidg | @@ -1639,31 +1574,31 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_IrcMarkLowAndHighTemp(int wheather_ChangeWidg | ||
| 1639 | * | 1574 | * |
| 1640 | * 侧面激光模式 | 1575 | * 侧面激光模式 |
| 1641 | * | 1576 | * |
| 1642 | -**********/ | ||
| 1643 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_SideLaserMode(int wheather_ChangeWidget, int wheather_control, int value) | ||
| 1644 | -{ | ||
| 1645 | - //如果修改控件 | ||
| 1646 | - if (wheather_ChangeWidget == JZ_FLAGCODE_ON) | ||
| 1647 | - { | ||
| 1648 | - UI_control_WidgetSet(JZSDK_WIDGET_SIDE_LASER_MODE, value); | ||
| 1649 | - } | ||
| 1650 | - | ||
| 1651 | - //如果进行控制 | ||
| 1652 | - if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1653 | - { | ||
| 1654 | - if (value == 0) | ||
| 1655 | - { | ||
| 1656 | - UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_OFF); | ||
| 1657 | - } | ||
| 1658 | - else | ||
| 1659 | - { | ||
| 1660 | - UIcontrol_SideLaser_SetMode(DEVICE_PSDK, value); | ||
| 1661 | - UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_ON); | ||
| 1662 | - } | ||
| 1663 | - } | ||
| 1664 | - | ||
| 1665 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 1666 | -} | 1577 | +// **********/ |
| 1578 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_SideLaserMode(int wheather_ChangeWidget, int wheather_control, int value) | ||
| 1579 | +// { | ||
| 1580 | +// //如果修改控件 | ||
| 1581 | +// if (wheather_ChangeWidget == JZ_FLAGCODE_ON) | ||
| 1582 | +// { | ||
| 1583 | +// UI_control_WidgetSet(JZSDK_WIDGET_SIDE_LASER_MODE, value); | ||
| 1584 | +// } | ||
| 1585 | + | ||
| 1586 | +// //如果进行控制 | ||
| 1587 | +// if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1588 | +// { | ||
| 1589 | +// if (value == 0) | ||
| 1590 | +// { | ||
| 1591 | +// UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_OFF); | ||
| 1592 | +// } | ||
| 1593 | +// else | ||
| 1594 | +// { | ||
| 1595 | +// UIcontrol_SideLaser_SetMode(DEVICE_PSDK, value); | ||
| 1596 | +// UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_ON); | ||
| 1597 | +// } | ||
| 1598 | +// } | ||
| 1599 | + | ||
| 1600 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 1601 | +// } | ||
| 1667 | 1602 | ||
| 1668 | /*******************************************************8**************************************************** | 1603 | /*******************************************************8**************************************************** |
| 1669 | * | 1604 | * |
| @@ -173,7 +173,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_AutoBadPixelCorrectMode(int wheather_Chan | @@ -173,7 +173,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_AutoBadPixelCorrectMode(int wheather_Chan | ||
| 173 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetPowerStatus(int value); | 173 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetPowerStatus(int value); |
| 174 | 174 | ||
| 175 | //侧面激光 | 175 | //侧面激光 |
| 176 | -T_JZsdkReturnCode JZsdk_Psdk_UI_io_SideLaserMode(int wheather_ChangeWidget, int wheather_control, int value); | 176 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_SideLaserMode(int wheather_control, int value); |
| 177 | 177 | ||
| 178 | 178 | ||
| 179 | //获取控件的实时opus模式是否开启 | 179 | //获取控件的实时opus模式是否开启 |
Module/UI_control/Psdk_UI_io2.c
0 → 100644
| 1 | +#include "JZsdkLib.h" | ||
| 2 | +#include "UI_control/Psdk_ui_value_menu.h" | ||
| 3 | +#include "UI_control/UI_control.h" | ||
| 4 | + | ||
| 5 | +#include "version_choose.h" | ||
| 6 | +#include "UI_control/Psdk_UI_io.h" | ||
| 7 | + | ||
| 8 | +#ifdef WARNLIGHT_STATUS_ON | ||
| 9 | + #include "WarnLight/WarnLight.h" | ||
| 10 | +#endif | ||
| 11 | + | ||
| 12 | +#ifdef SIDE_LASER_STATUS_ON | ||
| 13 | + #include "SideLaser/SideLaser.h" | ||
| 14 | +#endif | ||
| 15 | + | ||
| 16 | +//警灯颜色 | ||
| 17 | +static int FirstWarningLight = 1; | ||
| 18 | +static int SecondWarningLight = 3; | ||
| 19 | + | ||
| 20 | +//播放上一首歌曲 | ||
| 21 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_LastSong(int wheather_control) | ||
| 22 | +{ | ||
| 23 | + T_JZsdkReturnCode ret =JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 24 | + | ||
| 25 | + // 开启实时喊话时,锁定该功能 | ||
| 26 | + if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 27 | + { | ||
| 28 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + //将播放状态给到psdk ui | ||
| 32 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_PLAYANDSTOP, JZ_FLAGCODE_ON); | ||
| 33 | + | ||
| 34 | + if(wheather_control == JZ_FLAGCODE_ON) | ||
| 35 | + { | ||
| 36 | + //将播放上一首歌曲的命令发送到UIcontrol | ||
| 37 | + ret = UIcontrol_LastSong(DEVICE_PSDK); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + return ret; | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +//播放下一首歌曲 | ||
| 44 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_NextSong(int wheather_control) | ||
| 45 | +{ | ||
| 46 | + T_JZsdkReturnCode ret =JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 47 | + | ||
| 48 | + // 开启实时喊话时,锁定该功能 | ||
| 49 | + if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 50 | + { | ||
| 51 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + //将播放状态给到psdk ui | ||
| 55 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_PLAYANDSTOP, JZ_FLAGCODE_ON); | ||
| 56 | + | ||
| 57 | + // 如果有进行控制,不只是改控件 | ||
| 58 | + if (wheather_control == 1) | ||
| 59 | + { | ||
| 60 | + ret = UIcontrol_NextSong(DEVICE_PSDK); | ||
| 61 | + return ret; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 65 | +} | ||
| 66 | + | ||
| 67 | +//播放暂停 | ||
| 68 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Audio_PauseAndPlayContinue(int wheather_control, int value) | ||
| 69 | +{ | ||
| 70 | + T_JZsdkReturnCode ret =JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 71 | + | ||
| 72 | + // 开启实时喊话时,锁定该功能 | ||
| 73 | + if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 74 | + { | ||
| 75 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_PLAYANDSTOP, value); | ||
| 79 | + | ||
| 80 | + if(wheather_control == JZ_FLAGCODE_ON) | ||
| 81 | + { | ||
| 82 | + if (value == JZ_FLAGCODE_ON) | ||
| 83 | + { | ||
| 84 | + ret = UIcontrol_ContinuePlayAudio(DEVICE_PSDK); | ||
| 85 | + } | ||
| 86 | + else | ||
| 87 | + { | ||
| 88 | + ret = UIcontrol_PausePlayAudio(DEVICE_PSDK); | ||
| 89 | + } | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 93 | +} | ||
| 94 | + | ||
| 95 | + | ||
| 96 | +// 关闭喊话器所有音频 | ||
| 97 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_StopPlayAudio() | ||
| 98 | +{ | ||
| 99 | + // 开启实时喊话时,锁定该功能 | ||
| 100 | + if (Get_UI_Widget_OpusRealTimeMode() == JZ_FLAGCODE_ON) | ||
| 101 | + { | ||
| 102 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_PLAYANDSTOP, JZ_FLAGCODE_OFF); | ||
| 106 | + | ||
| 107 | + T_JZsdkReturnCode ret; | ||
| 108 | + ret = UIcontrol_StopPlayAudio(DEVICE_PSDK); | ||
| 109 | + return ret; | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +// T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetVolume(int wheather_control, int value) | ||
| 113 | +// { | ||
| 114 | +// //后续需要优化掉 | ||
| 115 | +// widget_volume = value; | ||
| 116 | + | ||
| 117 | +// //控件变化 | ||
| 118 | +// JZsdk_PsdkUi_value_set(JZSDK_WIDGET_VOLUME, value); | ||
| 119 | + | ||
| 120 | +// //将音量控制值发送到UIcontrol 用于控制设备 | ||
| 121 | +// if(wheather_control == JZ_FLAGCODE_ON) | ||
| 122 | +// { | ||
| 123 | +// UIcontrol_SetVolume(DEVICE_PSDK, value, JZ_FLAGCODE_ON); | ||
| 124 | +// } | ||
| 125 | + | ||
| 126 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 127 | +// } | ||
| 128 | + | ||
| 129 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_speed(int wheather_control, int speed) | ||
| 130 | +{ | ||
| 131 | + //将TTS速度的控件变化给到psdk ui | ||
| 132 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_TTS_SPEED, speed); | ||
| 133 | + | ||
| 134 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 135 | + { | ||
| 136 | + //将TTS速度的命令发送到UIcontrol | ||
| 137 | + UIcontrol_Set_TTS_speed(DEVICE_PSDK, speed); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 141 | +} | ||
| 142 | + | ||
| 143 | +// psdkTTS音色 10个音色 | ||
| 144 | +// 要分国内版和海外版 | ||
| 145 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_tone(int wheather_control, int tone) | ||
| 146 | +{ | ||
| 147 | + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 148 | + | ||
| 149 | + // 将控件界面的播放开关 转化为关闭 | ||
| 150 | + JZsdk_PsdkUi_value_set(JZSDK_WIDGET_TTS_TONE, tone); | ||
| 151 | + | ||
| 152 | + // 如果有进行控制,不只是改控件 | ||
| 153 | + if (wheather_control == 1) | ||
| 154 | + { | ||
| 155 | + ret = UIcontrol_Set_TTS_tone(DEVICE_PSDK,tone); | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + return ret; | ||
| 159 | +} | ||
| 160 | + | ||
| 161 | +/* | ||
| 162 | + 侧面激光 0 关 1绿常亮 2红常亮 3齐亮 4齐闪 5交替闪 | ||
| 163 | + 这里传入的value是控件值,要将其转换为开关与模式再转到uicontrol | ||
| 164 | +*/ | ||
| 165 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_SideLaserMode(int wheather_control, int value) | ||
| 166 | +{ | ||
| 167 | + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 168 | + | ||
| 169 | + ret = JZsdk_PsdkUi_value_set(JZSDK_WIDGET_SIDE_LASER_MODE, value); | ||
| 170 | + | ||
| 171 | +#ifdef SIDE_LASER_STATUS_ON | ||
| 172 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 173 | + { | ||
| 174 | + //获取模式 | ||
| 175 | + int mode = 0; | ||
| 176 | + SideLaser_param(JZ_FLAGCODE_GET ,SIDELASER_MODE, &mode); | ||
| 177 | + | ||
| 178 | + if (value == 0) | ||
| 179 | + { | ||
| 180 | + UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_OFF); | ||
| 181 | + } | ||
| 182 | + else | ||
| 183 | + { | ||
| 184 | + mode = value - 1; | ||
| 185 | + UIcontrol_SideLaser_SetMode(DEVICE_PSDK, mode); | ||
| 186 | + UIcontrol_SideLaser_SetControl(DEVICE_PSDK, JZ_FLAGCODE_ON); | ||
| 187 | + } | ||
| 188 | + } | ||
| 189 | +#endif | ||
| 190 | + | ||
| 191 | + return ret; | ||
| 192 | +} | ||
| 193 | + | ||
| 194 | +/* | ||
| 195 | + 警灯模式 0 关 1交替快闪 2交替满闪 3交替齐闪 4(同时快闪) 5(同时慢闪) | ||
| 196 | + 这里传入的value是控件值,要将其转换为开关与模式再转到uicontrol | ||
| 197 | +*/ | ||
| 198 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightMode(int wheather_control, int value) | ||
| 199 | +{ | ||
| 200 | + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 201 | + | ||
| 202 | + ret = JZsdk_PsdkUi_value_set(JZSDK_WIDGET_WARNLIGHT_MODE, value); | ||
| 203 | + | ||
| 204 | +#ifdef WARNLIGHT_STATUS_ON | ||
| 205 | + | ||
| 206 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 207 | + { | ||
| 208 | + T_JzWarnLightAttribute Attribute; | ||
| 209 | + WarnLight_Get_Attribute(&Attribute); | ||
| 210 | + | ||
| 211 | + //将ui值转换为模式值 | ||
| 212 | + int Lswitch = 0; | ||
| 213 | + int mode = 0; | ||
| 214 | + | ||
| 215 | + if (value == 0) | ||
| 216 | + { | ||
| 217 | + Lswitch = JZ_FLAGCODE_OFF; | ||
| 218 | + | ||
| 219 | + //去获取上次的模式 | ||
| 220 | + mode = Attribute.mode; | ||
| 221 | + } | ||
| 222 | + else | ||
| 223 | + { | ||
| 224 | + Lswitch = JZ_FLAGCODE_ON; | ||
| 225 | + mode = value - 1; | ||
| 226 | + } | ||
| 227 | + | ||
| 228 | + ret = UIcontrol_Set_WarningLight_ModeControl(DEVICE_PSDK, Lswitch, mode); | ||
| 229 | + } | ||
| 230 | +#endif | ||
| 231 | + return ret; | ||
| 232 | +} | ||
| 233 | + | ||
| 234 | +//警灯颜色1 | ||
| 235 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(int wheather_control, int value) | ||
| 236 | +{ | ||
| 237 | + T_JZsdkReturnCode ret; | ||
| 238 | + | ||
| 239 | + ret = JZsdk_PsdkUi_value_set(JZSDK_WIDGET_WARNLIGHT_COLOR_1, value); | ||
| 240 | + | ||
| 241 | + FirstWarningLight = value; | ||
| 242 | + | ||
| 243 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 244 | + { | ||
| 245 | + ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 246 | + } | ||
| 247 | + | ||
| 248 | + return ret; | ||
| 249 | +} | ||
| 250 | + | ||
| 251 | +//警灯颜色2 | ||
| 252 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(int wheather_control, int value) | ||
| 253 | +{ | ||
| 254 | + T_JZsdkReturnCode ret; | ||
| 255 | + | ||
| 256 | + ret = JZsdk_PsdkUi_value_set(JZSDK_WIDGET_WARNLIGHT_COLOR_2, value); | ||
| 257 | + | ||
| 258 | + SecondWarningLight = value; | ||
| 259 | + | ||
| 260 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 261 | + { | ||
| 262 | + ret = UIcontrol_Set_WarningLight_Color(DEVICE_PSDK, FirstWarningLight, SecondWarningLight); | ||
| 263 | + } | ||
| 264 | + | ||
| 265 | + return ret; | ||
| 266 | +} |
Module/UI_control/Psdk_Ui.c
已删除
100644 → 0
| 1 | -#include "Psdk_Ui.h" | ||
| 2 | -#include "JZsdkLib.h" | ||
| 3 | -#include "ExtensionAPI/JZsdk_ExpansionApi.h" | ||
| 4 | - | ||
| 5 | - | ||
| 6 | -/**************** | ||
| 7 | - * | ||
| 8 | - * 控件设置 | ||
| 9 | - * | ||
| 10 | - * *************/ | ||
| 11 | -static T_JZsdkReturnCode UI_control_WidgetArraySet(int index, int value) | ||
| 12 | -{ | ||
| 13 | - T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler(); | ||
| 14 | - if (handle != NULL && handle->Set_UI_Widget_Value != NULL) | ||
| 15 | - { | ||
| 16 | - //将控件值设置到psdk的ui控件 | ||
| 17 | - handle->Set_UI_Widget_Value(index, value); | ||
| 18 | - } | ||
| 19 | -} | ||
| 20 | - | ||
| 21 | - | ||
| 22 | -/**************** | ||
| 23 | - * | ||
| 24 | - * 二级控件设置 | ||
| 25 | - * | ||
| 26 | - * *************/ | ||
| 27 | -static T_JZsdkReturnCode UI_control_SecondaryWidgetArraySet(int type, int value) | ||
| 28 | -{ | ||
| 29 | - T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler(); | ||
| 30 | - if (handle == NULL) | ||
| 31 | - { | ||
| 32 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - switch (type) | ||
| 36 | - { | ||
| 37 | - | ||
| 38 | - case PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS: | ||
| 39 | - if (handle->Set_UI_SpeakerWidget_PlayState != NULL) | ||
| 40 | - { | ||
| 41 | - return handle->Set_UI_SpeakerWidget_PlayState(value); | ||
| 42 | - } | ||
| 43 | - break; | ||
| 44 | - | ||
| 45 | - case PSDK_UI_SECONDARY_WIDGET_LOOPPLAY: | ||
| 46 | - if (handle->Set_UI_SpeakerWidget_LoopMode != NULL) | ||
| 47 | - { | ||
| 48 | - return handle->Set_UI_SpeakerWidget_LoopMode(value); | ||
| 49 | - } | ||
| 50 | - break; | ||
| 51 | - | ||
| 52 | - case JZSDK_WIDGET_VOLUME://音量 | ||
| 53 | - if (handle->Set_UI_SpeakerWidget_Volume != NULL) | ||
| 54 | - { | ||
| 55 | - return handle->Set_UI_SpeakerWidget_Volume(value); | ||
| 56 | - } | ||
| 57 | - break; | ||
| 58 | - | ||
| 59 | - | ||
| 60 | - default: | ||
| 61 | - break; | ||
| 62 | - } | ||
| 63 | -} | ||
| 64 | - | ||
| 65 | -static T_JZsdkReturnCode JZsdk_UI_DJIpsdk_Widget_set(JZsdk_Widget_Control index, int value) | ||
| 66 | -{ | ||
| 67 | - switch (index) | ||
| 68 | - { | ||
| 69 | - case JZSDK_WIDGET_VOLUME: | ||
| 70 | - { | ||
| 71 | - //1、大疆音量控件需要去设置喊话器控件内的音量 | ||
| 72 | - UI_control_WidgetArraySet(3, value); | ||
| 73 | - UI_control_WidgetArraySet(4, value); | ||
| 74 | - | ||
| 75 | - //2、大疆音量控件需要去设置悬浮窗的音量 | ||
| 76 | - UI_control_SecondaryWidgetArraySet(JZSDK_WIDGET_VOLUME, value); | ||
| 77 | - } | ||
| 78 | - break; | ||
| 79 | - | ||
| 80 | - default: | ||
| 81 | - break; | ||
| 82 | - } | ||
| 83 | -} | ||
| 84 | -T_JZsdkReturnCode JZsdk_UI_value_set(JZsdk_Widget_Control index, int value) | ||
| 85 | -{ | ||
| 86 | - JZsdk_UI_DJIpsdk_Widget_set(index, value); | ||
| 87 | -} |
Module/UI_control/Psdk_ui_value_menu.c
0 → 100644
| 1 | +#include "Psdk_ui_value_menu.h" | ||
| 2 | +#include "JZsdkLib.h" | ||
| 3 | +#include "DeviceInfo/DeviceInfo.h" | ||
| 4 | + | ||
| 5 | +#include "version_choose.h" | ||
| 6 | +#include "JZsdkLib.h" | ||
| 7 | +#include "ExtensionAPI/JZsdk_ExpansionApi.h" | ||
| 8 | + | ||
| 9 | +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON | ||
| 10 | + static char Ify1_TTS_Value[10] = {0x00, 0x02, 0x11, 0x12, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36}; | ||
| 11 | +#endif | ||
| 12 | + | ||
| 13 | +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON | ||
| 14 | + static char Ify2_TTS_Value[10] = {0x01, 0x02, 0x11, 0x12, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37}; | ||
| 15 | +#endif | ||
| 16 | + | ||
| 17 | + | ||
| 18 | +/**************** | ||
| 19 | + * | ||
| 20 | + * 控件设置 | ||
| 21 | + * | ||
| 22 | + * *************/ | ||
| 23 | +static T_JZsdkReturnCode UI_control_WidgetArraySet(int index, int value) | ||
| 24 | +{ | ||
| 25 | + T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler(); | ||
| 26 | + if (handle != NULL && handle->Set_UI_Widget_Value != NULL) | ||
| 27 | + { | ||
| 28 | + //将控件值设置到psdk的ui控件 | ||
| 29 | + handle->Set_UI_Widget_Value(index, value); | ||
| 30 | + } | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | + | ||
| 34 | +/**************** | ||
| 35 | + * | ||
| 36 | + * 二级控件设置 | ||
| 37 | + * | ||
| 38 | + * *************/ | ||
| 39 | +static T_JZsdkReturnCode UI_control_SecondaryWidgetArraySet(int type, int value) | ||
| 40 | +{ | ||
| 41 | + T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler(); | ||
| 42 | + if (handle == NULL) | ||
| 43 | + { | ||
| 44 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + switch (type) | ||
| 48 | + { | ||
| 49 | + | ||
| 50 | + case JZSDK_WIDGET_PLAYANDSTOP: | ||
| 51 | + if (handle->Set_UI_SpeakerWidget_PlayState != NULL) | ||
| 52 | + { | ||
| 53 | + return handle->Set_UI_SpeakerWidget_PlayState(value); | ||
| 54 | + } | ||
| 55 | + break; | ||
| 56 | + | ||
| 57 | + case JZSDK_WIDGET_LOOP_PLAY: | ||
| 58 | + if (handle->Set_UI_SpeakerWidget_LoopMode != NULL) | ||
| 59 | + { | ||
| 60 | + return handle->Set_UI_SpeakerWidget_LoopMode(value); | ||
| 61 | + } | ||
| 62 | + break; | ||
| 63 | + | ||
| 64 | + case JZSDK_WIDGET_VOLUME://音量 | ||
| 65 | + if (handle->Set_UI_SpeakerWidget_Volume != NULL) | ||
| 66 | + { | ||
| 67 | + return handle->Set_UI_SpeakerWidget_Volume(value); | ||
| 68 | + } | ||
| 69 | + break; | ||
| 70 | + | ||
| 71 | + | ||
| 72 | + default: | ||
| 73 | + break; | ||
| 74 | + } | ||
| 75 | +} | ||
| 76 | + | ||
| 77 | +static T_JZsdkReturnCode JZsdk_UI_DJIpsdk_Widget_set(JZsdk_Widget_Control index, int value) | ||
| 78 | +{ | ||
| 79 | + switch (index) | ||
| 80 | + { | ||
| 81 | + case JZSDK_WIDGET_PLAYANDSTOP: | ||
| 82 | + { | ||
| 83 | + //如果是要播放 | ||
| 84 | + if (value == JZ_FLAGCODE_ON) | ||
| 85 | + { | ||
| 86 | + // 将控件界面的播放开关打开 | ||
| 87 | + UI_control_WidgetArraySet(JZSDK_WIDGET_PLAYANDSTOP, 0); | ||
| 88 | + | ||
| 89 | + // 将ttsSpeaker的开关关闭 | ||
| 90 | + UI_control_SecondaryWidgetArraySet(JZSDK_WIDGET_PLAYANDSTOP, JZ_FLAGCODE_OFF); | ||
| 91 | + } | ||
| 92 | + else | ||
| 93 | + { | ||
| 94 | + // 将控件界面的播放开关关闭 | ||
| 95 | + UI_control_WidgetArraySet(JZSDK_WIDGET_PLAYANDSTOP, 1); | ||
| 96 | + | ||
| 97 | + // 将ttsSpeaker的开关关闭 | ||
| 98 | + UI_control_SecondaryWidgetArraySet(JZSDK_WIDGET_PLAYANDSTOP, JZ_FLAGCODE_OFF); | ||
| 99 | + } | ||
| 100 | + } | ||
| 101 | + break; | ||
| 102 | + | ||
| 103 | + case JZSDK_WIDGET_VOLUME: | ||
| 104 | + { | ||
| 105 | + //1、大疆音量控件需要去设置喊话器控件内的音量 | ||
| 106 | + UI_control_WidgetArraySet(3, value); | ||
| 107 | + UI_control_WidgetArraySet(4, value); | ||
| 108 | + | ||
| 109 | + //2、大疆音量控件需要去设置悬浮窗的音量 | ||
| 110 | + UI_control_SecondaryWidgetArraySet(JZSDK_WIDGET_VOLUME, value); | ||
| 111 | + } | ||
| 112 | + break; | ||
| 113 | + | ||
| 114 | + case JZSDK_WIDGET_TTS_SPEED: | ||
| 115 | + { | ||
| 116 | + //将音量转换为控件值 | ||
| 117 | + int index = 0; | ||
| 118 | + if (value >=0 && value <=25 ) | ||
| 119 | + { | ||
| 120 | + index = 0; | ||
| 121 | + } | ||
| 122 | + else if (value > 25 && value <= 50) | ||
| 123 | + { | ||
| 124 | + index = 1; | ||
| 125 | + } | ||
| 126 | + else if (value > 50 && value <= 75) | ||
| 127 | + { | ||
| 128 | + index = 2; | ||
| 129 | + } | ||
| 130 | + else if (value > 75 && value <= 100) | ||
| 131 | + { | ||
| 132 | + index = 3; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + UI_control_WidgetArraySet(5, index); | ||
| 136 | + } | ||
| 137 | + break; | ||
| 138 | + | ||
| 139 | + case JZSDK_WIDGET_TTS_TONE: | ||
| 140 | + { | ||
| 141 | + //将音色转换为控件值 | ||
| 142 | + int index = 0; | ||
| 143 | + | ||
| 144 | +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON //讯飞一代音色转换 | ||
| 145 | + T_JZsdkReturnCode ret; | ||
| 146 | + int value; | ||
| 147 | + E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 148 | + | ||
| 149 | + //中文音色控件值转换 | ||
| 150 | + if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 151 | + { | ||
| 152 | + switch (value) | ||
| 153 | + { | ||
| 154 | + case 0x01: | ||
| 155 | + index = 0; | ||
| 156 | + break; | ||
| 157 | + | ||
| 158 | + case 0x02: | ||
| 159 | + index = 1; | ||
| 160 | + break; | ||
| 161 | + | ||
| 162 | + case 0x11: | ||
| 163 | + index = 2; | ||
| 164 | + break; | ||
| 165 | + | ||
| 166 | + case 0x12: | ||
| 167 | + index = 3; | ||
| 168 | + break; | ||
| 169 | + | ||
| 170 | + case 0x31: | ||
| 171 | + index = 4; | ||
| 172 | + break; | ||
| 173 | + | ||
| 174 | + case 0x32: | ||
| 175 | + index = 5; | ||
| 176 | + break; | ||
| 177 | + | ||
| 178 | + case 0x33: | ||
| 179 | + index = 6; | ||
| 180 | + break; | ||
| 181 | + | ||
| 182 | + case 0x34: | ||
| 183 | + index = 7; | ||
| 184 | + break; | ||
| 185 | + | ||
| 186 | + case 0x35: | ||
| 187 | + index = 8; | ||
| 188 | + break; | ||
| 189 | + | ||
| 190 | + case 0x36: | ||
| 191 | + index = 9; | ||
| 192 | + break; | ||
| 193 | + | ||
| 194 | + default: | ||
| 195 | + printf("无效的tts设置\n"); | ||
| 196 | + return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 197 | + break; | ||
| 198 | + } | ||
| 199 | + } | ||
| 200 | + else { | ||
| 201 | + switch (value) | ||
| 202 | + { | ||
| 203 | + case 0x01: | ||
| 204 | + index = 2; | ||
| 205 | + break; | ||
| 206 | + | ||
| 207 | + case 0x02: | ||
| 208 | + index = 3; | ||
| 209 | + break; | ||
| 210 | + | ||
| 211 | + case 0x11: | ||
| 212 | + index = 0; | ||
| 213 | + break; | ||
| 214 | + | ||
| 215 | + case 0x12: | ||
| 216 | + index = 1; | ||
| 217 | + break; | ||
| 218 | + | ||
| 219 | + case 0x41://俄 russian ru | ||
| 220 | + index = 4; | ||
| 221 | + break; | ||
| 222 | + | ||
| 223 | + case 0x42://法 french fr-fr | ||
| 224 | + index = 5; | ||
| 225 | + break; | ||
| 226 | + | ||
| 227 | + case 0x43://德 german de | ||
| 228 | + index = 6; | ||
| 229 | + break; | ||
| 230 | + | ||
| 231 | + case 0x44://韩 ko | ||
| 232 | + index = 7; | ||
| 233 | + break; | ||
| 234 | + | ||
| 235 | + case 0x45://意大利 italian it | ||
| 236 | + index = 8; | ||
| 237 | + break; | ||
| 238 | + | ||
| 239 | + case 0x46://波兰 polish pl | ||
| 240 | + index = 9; | ||
| 241 | + break; | ||
| 242 | + | ||
| 243 | + case 0x47://西班牙 spanish es | ||
| 244 | + index = 10; | ||
| 245 | + break; | ||
| 246 | + | ||
| 247 | + case 0x48://葡萄牙 portugal pt-pt | ||
| 248 | + index = 11; | ||
| 249 | + break; | ||
| 250 | + | ||
| 251 | + default: | ||
| 252 | + printf("无效的tts设置\n"); | ||
| 253 | + return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 254 | + break; | ||
| 255 | + } | ||
| 256 | + } | ||
| 257 | + | ||
| 258 | +#endif // IFLAY_TTS_1_CONFIG_STATUS_ON | ||
| 259 | + | ||
| 260 | +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON //讯飞二代音色转换 | ||
| 261 | + | ||
| 262 | + index = -1; | ||
| 263 | + | ||
| 264 | + int num = sizeof(Ify2_TTS_Value) / sizeof(Ify2_TTS_Value[0]); | ||
| 265 | + //将音色转换为控件值 | ||
| 266 | + for (int i = 0; i < num; i++) | ||
| 267 | + { | ||
| 268 | + if (Ify2_TTS_Value[i] == value) | ||
| 269 | + { | ||
| 270 | + index = i; | ||
| 271 | + break; | ||
| 272 | + } | ||
| 273 | + } | ||
| 274 | + | ||
| 275 | + if (index < 0) | ||
| 276 | + { | ||
| 277 | + printf("无效的tts设置\n"); | ||
| 278 | + return JZ_ERRORCODE_TTS_INVALID_TONE; | ||
| 279 | + break; | ||
| 280 | + } | ||
| 281 | + | ||
| 282 | +#endif // IFLAY_TTS_2_CONFIG_STATUS_ON | ||
| 283 | + | ||
| 284 | + JZsdk_PsdkUi_value_set(6 , index); | ||
| 285 | + | ||
| 286 | + } | ||
| 287 | + break; | ||
| 288 | + | ||
| 289 | + case JZSDK_WIDGET_SIDE_LASER_MODE: | ||
| 290 | + { | ||
| 291 | + int index = value; | ||
| 292 | +#if DEVICE_VERSION == JZ_T40 | ||
| 293 | + if (value == 0) | ||
| 294 | + { | ||
| 295 | + index = 0; | ||
| 296 | + } | ||
| 297 | + else if (value == 3) | ||
| 298 | + { | ||
| 299 | + index = 1; | ||
| 300 | + } | ||
| 301 | + else if (value == 4) | ||
| 302 | + { | ||
| 303 | + index = 2; | ||
| 304 | + } | ||
| 305 | + else | ||
| 306 | + { | ||
| 307 | + index = 0; | ||
| 308 | + } | ||
| 309 | +#endif | ||
| 310 | + UI_control_WidgetArraySet(15, index); | ||
| 311 | + } | ||
| 312 | + break; | ||
| 313 | + | ||
| 314 | + case JZSDK_WIDGET_WARNLIGHT_MODE: | ||
| 315 | + { | ||
| 316 | + int index = value; | ||
| 317 | +#if DEVICE_VERSION == JZ_T40 | ||
| 318 | + if (value == 0) | ||
| 319 | + { | ||
| 320 | + index = 0; | ||
| 321 | + } | ||
| 322 | + else if (value == 4) | ||
| 323 | + { | ||
| 324 | + index = 1; | ||
| 325 | + } | ||
| 326 | + else if (value == 5) | ||
| 327 | + { | ||
| 328 | + index = 2; | ||
| 329 | + } | ||
| 330 | + else | ||
| 331 | + { | ||
| 332 | + index = 0; | ||
| 333 | + } | ||
| 334 | +#endif | ||
| 335 | + UI_control_WidgetArraySet(16, index); | ||
| 336 | + } | ||
| 337 | + break; | ||
| 338 | + | ||
| 339 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_1: | ||
| 340 | + { | ||
| 341 | + int index = value - 1; | ||
| 342 | +#if DEVICE_VERSION == JZ_T40 | ||
| 343 | + if (index == 1) | ||
| 344 | + { | ||
| 345 | + index = 0; | ||
| 346 | + } | ||
| 347 | + else if (index == 3) | ||
| 348 | + { | ||
| 349 | + index = 1; | ||
| 350 | + } | ||
| 351 | +#endif | ||
| 352 | + UI_control_WidgetArraySet(17, index); | ||
| 353 | + } | ||
| 354 | + break; | ||
| 355 | + | ||
| 356 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_2: | ||
| 357 | + { | ||
| 358 | + int index = value - 1; | ||
| 359 | +#if DEVICE_VERSION == JZ_T40 | ||
| 360 | + if (index == 1) | ||
| 361 | + { | ||
| 362 | + index = 0; | ||
| 363 | + } | ||
| 364 | + else if (index == 3) | ||
| 365 | + { | ||
| 366 | + index = 1; | ||
| 367 | + } | ||
| 368 | +#endif | ||
| 369 | + UI_control_WidgetArraySet(18, index); | ||
| 370 | + } | ||
| 371 | + break; | ||
| 372 | + | ||
| 373 | + | ||
| 374 | + | ||
| 375 | + default: | ||
| 376 | + break; | ||
| 377 | + } | ||
| 378 | +} | ||
| 379 | + | ||
| 380 | +//设置控件值 | ||
| 381 | +T_JZsdkReturnCode JZsdk_PsdkUi_value_set(JZsdk_Widget_Control index, int value) | ||
| 382 | +{ | ||
| 383 | + JZsdk_UI_DJIpsdk_Widget_set(index, value); | ||
| 384 | +} | ||
| 385 | + | ||
| 386 | + | ||
| 387 | + | ||
| 388 | +//控件值转换为变量, 专门用在test wideget | ||
| 389 | +T_JZsdkReturnCode JZsdk_PsdkUi_value_get(JZsdk_Widget_Control index, int *value) | ||
| 390 | +{ | ||
| 391 | + switch (index) | ||
| 392 | + { | ||
| 393 | + case JZSDK_WIDGET_TTS_SPEED: | ||
| 394 | + { | ||
| 395 | + int index = 0; | ||
| 396 | + if (*value == 0) | ||
| 397 | + { | ||
| 398 | + index = 25; | ||
| 399 | + } | ||
| 400 | + else if (*value == 1) | ||
| 401 | + { | ||
| 402 | + index = 50; | ||
| 403 | + } | ||
| 404 | + else if (*value == 2) | ||
| 405 | + { | ||
| 406 | + index = 75; | ||
| 407 | + } | ||
| 408 | + else if (*value == 3) | ||
| 409 | + { | ||
| 410 | + index = 100; | ||
| 411 | + } | ||
| 412 | + | ||
| 413 | + *value = index; | ||
| 414 | + } | ||
| 415 | + break; | ||
| 416 | + | ||
| 417 | + case JZSDK_WIDGET_TTS_TONE: | ||
| 418 | + { | ||
| 419 | + int tone = 0x01; | ||
| 420 | + | ||
| 421 | +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON //讯飞一代音色转换 | ||
| 422 | + | ||
| 423 | + E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo(); | ||
| 424 | + | ||
| 425 | + | ||
| 426 | + if (LanguageInfo == LANGUAGE_INFO_CHINESE) | ||
| 427 | + { | ||
| 428 | + switch (value) | ||
| 429 | + { | ||
| 430 | + case 0: | ||
| 431 | + tone = 0x01; | ||
| 432 | + break; | ||
| 433 | + case 1: | ||
| 434 | + tone = 0x02; | ||
| 435 | + break; | ||
| 436 | + case 2: | ||
| 437 | + tone = 0x11; | ||
| 438 | + break; | ||
| 439 | + case 3: | ||
| 440 | + tone = 0x12; | ||
| 441 | + break; | ||
| 442 | + case 4: | ||
| 443 | + tone = 0x31; | ||
| 444 | + break; | ||
| 445 | + case 5: | ||
| 446 | + tone = 0x32; | ||
| 447 | + break; | ||
| 448 | + case 6: | ||
| 449 | + tone = 0x33; | ||
| 450 | + break; | ||
| 451 | + case 7: | ||
| 452 | + tone = 0x34; | ||
| 453 | + break; | ||
| 454 | + case 8: | ||
| 455 | + tone = 0x35; | ||
| 456 | + break; | ||
| 457 | + case 9: | ||
| 458 | + tone = 0x36; | ||
| 459 | + break; | ||
| 460 | + default: | ||
| 461 | + tone = 0x01; | ||
| 462 | + break; | ||
| 463 | + } | ||
| 464 | + | ||
| 465 | + } | ||
| 466 | + | ||
| 467 | + else | ||
| 468 | + { | ||
| 469 | + switch (value) | ||
| 470 | + { | ||
| 471 | + case 0: | ||
| 472 | + tone = 0x11; | ||
| 473 | + break; | ||
| 474 | + case 1: | ||
| 475 | + tone = 0x12; | ||
| 476 | + break; | ||
| 477 | + case 2: | ||
| 478 | + tone = 0x01; | ||
| 479 | + break; | ||
| 480 | + case 3: | ||
| 481 | + tone = 0x02; | ||
| 482 | + break; | ||
| 483 | + case 4: | ||
| 484 | + tone = 0x41; | ||
| 485 | + break; | ||
| 486 | + case 5: | ||
| 487 | + tone = 0x42; | ||
| 488 | + break; | ||
| 489 | + case 6: | ||
| 490 | + tone = 0x43; | ||
| 491 | + break; | ||
| 492 | + case 7: | ||
| 493 | + tone = 0x44; | ||
| 494 | + break; | ||
| 495 | + case 8: | ||
| 496 | + tone = 0x45; | ||
| 497 | + break; | ||
| 498 | + case 9: | ||
| 499 | + tone = 0x46; | ||
| 500 | + break; | ||
| 501 | + case 10: | ||
| 502 | + tone = 0x47; | ||
| 503 | + break; | ||
| 504 | + case 11: | ||
| 505 | + tone = 0x48; | ||
| 506 | + break; | ||
| 507 | + | ||
| 508 | + default: | ||
| 509 | + tone = 0x11; | ||
| 510 | + break; | ||
| 511 | + } | ||
| 512 | + } | ||
| 513 | + | ||
| 514 | +#endif //讯飞一代音色转换 | ||
| 515 | + | ||
| 516 | +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON //讯飞二代音色转换 | ||
| 517 | + | ||
| 518 | + if (*value > (sizeof(Ify2_TTS_Value)/sizeof(Ify2_TTS_Value[0]))) | ||
| 519 | + { | ||
| 520 | + JZSDK_LOG_ERROR("TTS tone value error"); | ||
| 521 | + tone = 0; | ||
| 522 | + } | ||
| 523 | + else | ||
| 524 | + { | ||
| 525 | + tone = Ify2_TTS_Value[*value]; | ||
| 526 | + } | ||
| 527 | +#endif | ||
| 528 | + *value = tone; | ||
| 529 | + } | ||
| 530 | + break; | ||
| 531 | + | ||
| 532 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_1: | ||
| 533 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_2: | ||
| 534 | + { | ||
| 535 | + int color; | ||
| 536 | +#if DEVICE_VERSION == JZ_T40 | ||
| 537 | + | ||
| 538 | + if (*value == 0) | ||
| 539 | + { | ||
| 540 | + color = 0x01; //红色 | ||
| 541 | + } | ||
| 542 | + else if (*value == 1) | ||
| 543 | + { | ||
| 544 | + color = 0x03; //蓝色 | ||
| 545 | + } | ||
| 546 | +#else | ||
| 547 | + if (*value == 0) | ||
| 548 | + { | ||
| 549 | + color = 0x01; //红色 | ||
| 550 | + } | ||
| 551 | + else if (*value == 1) | ||
| 552 | + { | ||
| 553 | + color = 0x02; //绿色 | ||
| 554 | + } | ||
| 555 | + else if (*value == 2) | ||
| 556 | + { | ||
| 557 | + color = 0x03; //蓝色 | ||
| 558 | + } | ||
| 559 | + else if (*value == 3) | ||
| 560 | + { | ||
| 561 | + color = 0x04; //黄色 | ||
| 562 | + } | ||
| 563 | + else if (*value == 4) | ||
| 564 | + { | ||
| 565 | + color = 0x05; //白色 | ||
| 566 | + } | ||
| 567 | +#endif | ||
| 568 | + *value = color; | ||
| 569 | + } | ||
| 570 | + break; | ||
| 571 | + | ||
| 572 | + case JZSDK_WIDGET_SIDE_LASER_MODE: | ||
| 573 | + { | ||
| 574 | + int index = *value; | ||
| 575 | + | ||
| 576 | +#if DEVICE_VERSION == JZ_T40 | ||
| 577 | + if(index == 0) | ||
| 578 | + { | ||
| 579 | + *value = 0; | ||
| 580 | + } | ||
| 581 | + else if (index == 1) | ||
| 582 | + { | ||
| 583 | + *value = 3; | ||
| 584 | + } | ||
| 585 | + else if (index == 2) | ||
| 586 | + { | ||
| 587 | + *value = 4; | ||
| 588 | + } | ||
| 589 | + else | ||
| 590 | + { | ||
| 591 | + *value = 0; | ||
| 592 | + } | ||
| 593 | +#else | ||
| 594 | + *value = index; | ||
| 595 | +#endif | ||
| 596 | + } | ||
| 597 | + break; | ||
| 598 | + | ||
| 599 | + case JZSDK_WIDGET_WARNLIGHT_MODE: | ||
| 600 | + { | ||
| 601 | + int index = *value; | ||
| 602 | +#if DEVICE_VERSION == JZ_T40 | ||
| 603 | + | ||
| 604 | + if(index == 0) | ||
| 605 | + { | ||
| 606 | + *value = 0; | ||
| 607 | + } | ||
| 608 | + else if (index == 1) | ||
| 609 | + { | ||
| 610 | + *value = 4; | ||
| 611 | + } | ||
| 612 | + else if (index == 2) | ||
| 613 | + { | ||
| 614 | + *value = 5; | ||
| 615 | + } | ||
| 616 | + else | ||
| 617 | + { | ||
| 618 | + *value = 0; | ||
| 619 | + } | ||
| 620 | +#else | ||
| 621 | + *value = index; | ||
| 622 | +#endif | ||
| 623 | + } | ||
| 624 | + break; | ||
| 625 | + | ||
| 626 | + default: | ||
| 627 | + break; | ||
| 628 | + } | ||
| 629 | + | ||
| 630 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 631 | +} |
| 1 | /** | 1 | /** |
| 2 | ******************************************************************** | 2 | ******************************************************************** |
| 3 | - * @file Psdk_Ui.h | ||
| 4 | - * Psdk_Ui的头文件 | 3 | + * @file Psdk_ui_change.h |
| 4 | + * Psdk_ui_change的头文件 | ||
| 5 | * | 5 | * |
| 6 | ********************************************************************* | 6 | ********************************************************************* |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
| 10 | -#ifndef PSDK_UI_H | ||
| 11 | -#define PSDK_UI_H | 10 | +#ifndef PSDK_UI_CHANGE_H |
| 11 | +#define PSDK_UI_CHANGE_H | ||
| 12 | 12 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
| 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| @@ -25,7 +25,8 @@ extern "C" { | @@ -25,7 +25,8 @@ extern "C" { | ||
| 25 | /* Exported types ------------------------------------------------------------*/ | 25 | /* Exported types ------------------------------------------------------------*/ |
| 26 | 26 | ||
| 27 | /* Exported functions --------------------------------------------------------*/ | 27 | /* Exported functions --------------------------------------------------------*/ |
| 28 | -T_JZsdkReturnCode JZsdk_UI_value_set(JZsdk_Widget_Control index, int value); | 28 | +T_JZsdkReturnCode JZsdk_PsdkUi_value_set(JZsdk_Widget_Control index, int value); |
| 29 | +T_JZsdkReturnCode JZsdk_PsdkUi_value_get(JZsdk_Widget_Control index, int *value); | ||
| 29 | 30 | ||
| 30 | 31 | ||
| 31 | #ifdef __cplusplus | 32 | #ifdef __cplusplus |
| @@ -1413,7 +1413,18 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val | @@ -1413,7 +1413,18 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val | ||
| 1413 | //如果psdk接口已经使用 | 1413 | //如果psdk接口已经使用 |
| 1414 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) | 1414 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) |
| 1415 | { | 1415 | { |
| 1416 | + int index; | ||
| 1416 | 1417 | ||
| 1418 | + if (LightAttribute.status == JZ_FLAGCODE_OFF) | ||
| 1419 | + { | ||
| 1420 | + index = 0; | ||
| 1421 | + } | ||
| 1422 | + else | ||
| 1423 | + { | ||
| 1424 | + index = LightAttribute.mode + 1; | ||
| 1425 | + } | ||
| 1426 | + | ||
| 1427 | + JZsdk_Psdk_UI_io_Set_WarningLightMode(JZ_FLAGCODE_OFF, index); | ||
| 1417 | } | 1428 | } |
| 1418 | 1429 | ||
| 1419 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 1430 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| @@ -1458,7 +1469,8 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i | @@ -1458,7 +1469,8 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i | ||
| 1458 | //如果psdk接口已经使用 | 1469 | //如果psdk接口已经使用 |
| 1459 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) | 1470 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) |
| 1460 | { | 1471 | { |
| 1461 | - | 1472 | + JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(JZ_FLAGCODE_OFF, value1); |
| 1473 | + JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(JZ_FLAGCODE_OFF, value2); | ||
| 1462 | } | 1474 | } |
| 1463 | 1475 | ||
| 1464 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 1476 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| @@ -2652,25 +2664,29 @@ T_JZsdkReturnCode UIcontrol_SideLaser_SetControl(int DeviceName, int value) | @@ -2652,25 +2664,29 @@ T_JZsdkReturnCode UIcontrol_SideLaser_SetControl(int DeviceName, int value) | ||
| 2652 | return ret; | 2664 | return ret; |
| 2653 | } | 2665 | } |
| 2654 | 2666 | ||
| 2667 | + T_JZsdkSideLaserInfo Info; | ||
| 2668 | + //获取参数 | ||
| 2669 | + SideLaser_getInfo(&Info); | ||
| 2670 | + | ||
| 2655 | //2、通知其他设备变化 | 2671 | //2、通知其他设备变化 |
| 2656 | if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) | 2672 | if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) |
| 2657 | { | 2673 | { |
| 2674 | + HalSend_type1Send_LaserControl(UART_4G, 0x00, Info.status); | ||
| 2658 | } | 2675 | } |
| 2659 | //如果设备1有启动 | 2676 | //如果设备1有启动 |
| 2660 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) | 2677 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) |
| 2661 | { | 2678 | { |
| 2679 | + HalSend_type1Send_LaserControl(UART_DEV_1, 0x00, Info.status); | ||
| 2662 | } | 2680 | } |
| 2663 | //如果设备2有启动 | 2681 | //如果设备2有启动 |
| 2664 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) | 2682 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) |
| 2665 | { | 2683 | { |
| 2684 | + HalSend_type1Send_LaserControl(UART_DEV_2, 0x00, Info.status); | ||
| 2666 | } | 2685 | } |
| 2667 | //如果psdk接口已经使用 | 2686 | //如果psdk接口已经使用 |
| 2668 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) | 2687 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) |
| 2669 | { | 2688 | { |
| 2670 | - int RealMode; | ||
| 2671 | - //psdk的ui是开关和模式一起的,所以需要另外获取 | ||
| 2672 | - SideLaser_param(JZ_FLAGCODE_GET, SIDELASER_REALMODE, &RealMode); | ||
| 2673 | - JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, RealMode); | 2689 | + JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_OFF, Info.Uimode); |
| 2674 | } | 2690 | } |
| 2675 | 2691 | ||
| 2676 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 2692 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| @@ -2690,25 +2706,29 @@ T_JZsdkReturnCode UIcontrol_SideLaser_SetMode(int DeviceName, int value) | @@ -2690,25 +2706,29 @@ T_JZsdkReturnCode UIcontrol_SideLaser_SetMode(int DeviceName, int value) | ||
| 2690 | return ret; | 2706 | return ret; |
| 2691 | } | 2707 | } |
| 2692 | 2708 | ||
| 2709 | + T_JZsdkSideLaserInfo Info; | ||
| 2710 | + //获取参数 | ||
| 2711 | + SideLaser_getInfo(&Info); | ||
| 2712 | + | ||
| 2693 | //2、通知其他设备变化 | 2713 | //2、通知其他设备变化 |
| 2694 | if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) | 2714 | if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) |
| 2695 | { | 2715 | { |
| 2716 | + HalSend_type1Send_LaserMode(UART_4G, 0x00, Info.mode); | ||
| 2696 | } | 2717 | } |
| 2697 | //如果设备1有启动 | 2718 | //如果设备1有启动 |
| 2698 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) | 2719 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) |
| 2699 | { | 2720 | { |
| 2721 | + HalSend_type1Send_LaserMode(UART_DEV_1, 0x00, Info.mode); | ||
| 2700 | } | 2722 | } |
| 2701 | //如果设备2有启动 | 2723 | //如果设备2有启动 |
| 2702 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) | 2724 | if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) |
| 2703 | { | 2725 | { |
| 2726 | + HalSend_type1Send_LaserMode(UART_DEV_2, 0x00, Info.mode); | ||
| 2704 | } | 2727 | } |
| 2705 | //如果psdk接口已经使用 | 2728 | //如果psdk接口已经使用 |
| 2706 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) | 2729 | if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) |
| 2707 | { | 2730 | { |
| 2708 | - int RealMode; | ||
| 2709 | - //psdk的ui是开关和模式一起的,所以需要另外获取 | ||
| 2710 | - SideLaser_param(JZ_FLAGCODE_GET, SIDELASER_REALMODE, &RealMode); | ||
| 2711 | - JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, RealMode); | 2731 | + JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_OFF, Info.Uimode); |
| 2712 | } | 2732 | } |
| 2713 | 2733 | ||
| 2714 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 2734 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| @@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
| 12 | 12 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
| 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| 15 | +#include "UI_control/Psdk_ui_value_menu.h" | ||
| 15 | 16 | ||
| 16 | #ifdef __cplusplus | 17 | #ifdef __cplusplus |
| 17 | extern "C" { | 18 | extern "C" { |
| @@ -48,6 +48,27 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | @@ -48,6 +48,27 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | ||
| 48 | JZsdk_Psdk_UI_io_Audio_PauseAndPlayContinue(JZ_FLAGCODE_ON, value); | 48 | JZsdk_Psdk_UI_io_Audio_PauseAndPlayContinue(JZ_FLAGCODE_ON, value); |
| 49 | break; | 49 | break; |
| 50 | 50 | ||
| 51 | + case JZSDK_WIDGET_TTS_SPEED: | ||
| 52 | + JZsdk_Psdk_UI_io_Set_TTS_speed(JZ_FLAGCODE_ON,value); | ||
| 53 | + break; | ||
| 54 | + | ||
| 55 | + case JZSDK_WIDGET_TTS_TONE: | ||
| 56 | + JZsdk_Psdk_UI_io_Set_TTS_tone(JZ_FLAGCODE_ON,value); | ||
| 57 | + break; | ||
| 58 | + | ||
| 59 | + | ||
| 60 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_1: | ||
| 61 | + JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(JZ_FLAGCODE_ON, value); | ||
| 62 | + break; | ||
| 63 | + | ||
| 64 | + case JZSDK_WIDGET_WARNLIGHT_COLOR_2: | ||
| 65 | + JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(JZ_FLAGCODE_ON, value); | ||
| 66 | + break; | ||
| 67 | + | ||
| 68 | + case JZSDK_WIDGET_WARNLIGHT_MODE: | ||
| 69 | + JZsdk_Psdk_UI_io_Set_WarningLightMode(JZ_FLAGCODE_ON, value); | ||
| 70 | + break; | ||
| 71 | + | ||
| 51 | //相机 | 72 | //相机 |
| 52 | case JZSDK_WIDGET_VIDEOPUSH_INDEX: | 73 | case JZSDK_WIDGET_VIDEOPUSH_INDEX: |
| 53 | JZsdk_Psdk_UI_io_Set_VideoMgmtPush(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); | 74 | JZsdk_Psdk_UI_io_Set_VideoMgmtPush(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); |
| @@ -125,12 +146,10 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | @@ -125,12 +146,10 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | ||
| 125 | 146 | ||
| 126 | case JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION: | 147 | case JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION: |
| 127 | printf("未设置"); | 148 | printf("未设置"); |
| 128 | - break; | ||
| 129 | - | ||
| 130 | - | 149 | + break; |
| 131 | 150 | ||
| 132 | case JZSDK_WIDGET_SIDE_LASER_MODE: | 151 | case JZSDK_WIDGET_SIDE_LASER_MODE: |
| 133 | - JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); | 152 | + JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, value); |
| 134 | break; | 153 | break; |
| 135 | 154 | ||
| 136 | default: | 155 | default: |
| @@ -499,14 +499,16 @@ static T_JZsdkReturnCode Megphone_Widget(unsigned int index, unsigned int value) | @@ -499,14 +499,16 @@ static T_JZsdkReturnCode Megphone_Widget(unsigned int index, unsigned int value) | ||
| 499 | } | 499 | } |
| 500 | case 5://TTS语速 list | 500 | case 5://TTS语速 list |
| 501 | { | 501 | { |
| 502 | - int speed = JZsdk_Psdk_UI_io_GetTTSSpeed_ByValue(value); | ||
| 503 | - JZsdk_Psdk_UI_io_Set_TTS_speed(1,speed); | 502 | + int speed = value; |
| 503 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_TTS_SPEED, &speed); | ||
| 504 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_TTS_SPEED, speed); | ||
| 504 | break; | 505 | break; |
| 505 | } | 506 | } |
| 506 | case 6://TTS音色 list | 507 | case 6://TTS音色 list |
| 507 | - { | ||
| 508 | - int tone = JZsdk_Psdk_UI_io_GetTTSTone_ByValue(value); | ||
| 509 | - JZsdk_Psdk_UI_io_Set_TTS_tone(1,tone); | 508 | + { |
| 509 | + int tone = value; | ||
| 510 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_TTS_TONE, &tone); | ||
| 511 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_TTS_TONE, tone); | ||
| 510 | break; | 512 | break; |
| 511 | } | 513 | } |
| 512 | case 7://TTS追加音色 list | 514 | case 7://TTS追加音色 list |
| @@ -579,23 +581,31 @@ static T_JZsdkReturnCode Megphone_Widget(unsigned int index, unsigned int value) | @@ -579,23 +581,31 @@ static T_JZsdkReturnCode Megphone_Widget(unsigned int index, unsigned int value) | ||
| 579 | //侧面激光部分 | 581 | //侧面激光部分 |
| 580 | case 15://激光开关 | 582 | case 15://激光开关 |
| 581 | { | 583 | { |
| 582 | - JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_SIDE_LASER_MODE, value); | 584 | + int mode = value; |
| 585 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_SIDE_LASER_MODE, &mode); | ||
| 586 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_SIDE_LASER_MODE, mode); | ||
| 583 | break; | 587 | break; |
| 584 | } | 588 | } |
| 585 | //警灯部分 | 589 | //警灯部分 |
| 586 | case 16://警灯模式 | 590 | case 16://警灯模式 |
| 587 | - { | ||
| 588 | - JZsdk_Psdk_UI_io_Set_WarningLightMode(1,value); | 591 | + { |
| 592 | + int mode = value; | ||
| 593 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_WARNLIGHT_MODE, &mode); | ||
| 594 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_WARNLIGHT_MODE, mode); | ||
| 589 | break; | 595 | break; |
| 590 | } | 596 | } |
| 591 | case 17://警灯颜色1 | 597 | case 17://警灯颜色1 |
| 592 | { | 598 | { |
| 593 | - JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(1,(value+1)); | 599 | + int color = value; |
| 600 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_WARNLIGHT_COLOR_1, &color); | ||
| 601 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_WARNLIGHT_COLOR_1,color); | ||
| 594 | break; | 602 | break; |
| 595 | } | 603 | } |
| 596 | case 18://警灯颜色2 | 604 | case 18://警灯颜色2 |
| 597 | { | 605 | { |
| 598 | - JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(1,(value+1)); | 606 | + int color = value; |
| 607 | + JZsdk_PsdkUi_value_get(JZSDK_WIDGET_WARNLIGHT_COLOR_1, &color); | ||
| 608 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_WARNLIGHT_COLOR_2,color); | ||
| 599 | break; | 609 | break; |
| 600 | } | 610 | } |
| 601 | //云台部分 | 611 | //云台部分 |
| 1 | # cmake 最低版本要求 第三行名字不能动 | 1 | # cmake 最低版本要求 第三行名字不能动 |
| 2 | cmake_minimum_required(VERSION 2.8) | 2 | cmake_minimum_required(VERSION 2.8) |
| 3 | -project(JZ_H150S) | 3 | +project(JZ_T40) |
| 4 | 4 | ||
| 5 | #set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++") | 5 | #set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++") |
| 6 | #"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。 | 6 | #"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。 |
-
请 注册 或 登录 后发表评论