107 lines
3.7 KiB
C
107 lines
3.7 KiB
C
//
|
|
// Created by zemon on 24.07.24.
|
|
//
|
|
|
|
#include "ComIntCodec.h"
|
|
#include "string.h"
|
|
#include "nau88u10yg.h"
|
|
|
|
uint8_t XfcProtMethod_GetCodecVar(tXfcArray *request, tXfcArray *response, tXfcCodec *env, char *paramValueID_text, uint8_t paramValueID_len) {
|
|
|
|
// Текстовый вид ID
|
|
XFC_CMD_TX_ADD_RAW(paramValueID_len);
|
|
XFC_CMD_TX_ADD_ARR(paramValueID_text, paramValueID_len);
|
|
|
|
if (memcmp(paramValueID_text, "ADR", sizeof("ADR") - 1) == 0) {
|
|
uint8_t len = 2;
|
|
// Размер данных
|
|
XFC_CMD_TX_ADD_RAW(len);
|
|
// Данные
|
|
uint16_t indexScroll = env->adr; // = ProtMethods_AmplGetLvlVolumeIndex(env->amplifier,env->level);
|
|
XFC_CMD_TX_ADD_ARR(&indexScroll, len);
|
|
|
|
return true;
|
|
}
|
|
|
|
if (memcmp(paramValueID_text, "VALUE", sizeof("VALUE") - 1) == 0) {
|
|
uint8_t len = 2;
|
|
// Размер данных
|
|
XFC_CMD_TX_ADD_RAW(len);
|
|
// Данные
|
|
uint16_t indexScroll = env->data; // = ProtMethods_AmplGetLvlVoltIndex(env->amplifier,env->voltage);
|
|
XFC_CMD_TX_ADD_ARR(&indexScroll, len);
|
|
|
|
return true;
|
|
}
|
|
|
|
if (memcmp(paramValueID_text, "VOLUME_LEVEL", sizeof("VOLUME_LEVEL") - 1) == 0) {
|
|
uint8_t len = 2;
|
|
// Размер данных
|
|
XFC_CMD_TX_ADD_RAW(len);
|
|
// Данные
|
|
uint16_t indexScroll = ProtMethods_CodecGetLvlVoltIndex(env->audioCodec,env->volumeLevel);
|
|
XFC_CMD_TX_ADD_ARR(&indexScroll, len);
|
|
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
uint8_t XfcProtMethod_CodecGet(tXfcArray *request, tXfcArray *response, tXfcCodec *env) {
|
|
AudioCodec_GetVolumeLevel(env->audioCodec, &env->volumeLevel);
|
|
|
|
// Чтение всех параметров
|
|
if (XfcArrayGetDataSize(request) == 0) {
|
|
|
|
uint16_t paramCount = 3;
|
|
// Количество параметров
|
|
XFC_CMD_TX_ADD_RAW(paramCount);
|
|
|
|
uint8_t paramValueID_len;
|
|
char paramValueID_text[20];
|
|
|
|
paramValueID_len = sizeof("ADR") - 1;
|
|
paramValueID_text[0] = '\0';
|
|
strcat(paramValueID_text, "ADR");
|
|
if (!XfcProtMethod_GetCodecVar(request, response, env, paramValueID_text, paramValueID_len)) {
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
|
|
}
|
|
|
|
paramValueID_len = sizeof("VALUE") - 1;
|
|
paramValueID_text[0] = '\0';
|
|
strcat(paramValueID_text, "VALUE");
|
|
if (!XfcProtMethod_GetCodecVar(request, response, env, paramValueID_text, paramValueID_len)) {
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
|
|
}
|
|
|
|
paramValueID_len = sizeof("VOLUME_LEVEL") - 1;
|
|
paramValueID_text[0] = '\0';
|
|
strcat(paramValueID_text, "VOLUME_LEVEL");
|
|
if (!XfcProtMethod_GetCodecVar(request, response, env, paramValueID_text, paramValueID_len)) {
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
|
|
}
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK;
|
|
}
|
|
|
|
// Чтение избранных параметров
|
|
uint16_t paramCount;
|
|
XFC_CMD_RX_GET_RAW(paramCount);
|
|
|
|
// Количество параметров
|
|
XFC_CMD_TX_ADD_RAW(paramCount);
|
|
|
|
for (uint16_t count = 0; count < paramCount; ++count) {
|
|
// Получение текстового id параметра
|
|
uint8_t paramValueID_len;
|
|
XFC_CMD_RX_GET_RAW(paramValueID_len);
|
|
char paramValueID_text[paramValueID_len];
|
|
XFC_CMD_RX_GET_ARR(paramValueID_text, paramValueID_len);
|
|
|
|
if(!XfcProtMethod_GetCodecVar(request, response, env, paramValueID_text, paramValueID_len)) {
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
|
|
}
|
|
|
|
}
|
|
|
|
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK;
|
|
} |