1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +03:00

In progress ...

This commit is contained in:
Bertrand Songis 2019-02-06 19:12:20 +01:00
parent 8f9fcca0c4
commit dfd12ff978
9 changed files with 155 additions and 17 deletions

View file

@ -91,6 +91,8 @@ void processRegisterFrame(uint8_t module, uint8_t * frame)
}
}
const uint8_t MY_RX_ID[] = { 0x46, 0x17, 0x32, 0x85 };
void processBindFrame(uint8_t module, uint8_t * frame)
{
if (moduleSettings[module].mode != MODULE_MODE_BIND) {
@ -100,13 +102,13 @@ void processBindFrame(uint8_t module, uint8_t * frame)
if (frame[3] == 0x00) {
bool found = false;
for (uint8_t i=0; i<reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; i++) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[i], &frame[4], PXX2_LEN_RX_ID) == 0) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[i], MY_RX_ID /*TODO &frame[4]*/, PXX2_LEN_RX_ID) == 0) {
found = true;
break;
}
}
if (!found && reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count < PXX2_MAX_RECEIVERS_PER_MODULE) {
memcpy(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], &frame[4], PXX2_LEN_RX_ID);
memcpy(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], MY_RX_ID /*TODO &frame[4]*/, PXX2_LEN_RX_ID);
char * c = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count];
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
uint8_t byte = frame[4 + i];
@ -122,13 +124,35 @@ void processBindFrame(uint8_t module, uint8_t * frame)
}
}
else if (frame[3] == 0x01) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], &frame[4], PXX2_LEN_RX_ID) == 0) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], MY_RX_ID /*TODO &frame[4]*/, PXX2_LEN_RX_ID) == 0) {
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_OK;
moduleSettings[module].mode = MODULE_MODE_NORMAL;
}
}
}
uint32_t FREQUENCY;
uint8_t POWER;
void processSpectrumFrame(uint8_t module, uint8_t * frame)
{
if (moduleSettings[module].mode != MODULE_MODE_SPECTRUM) {
return;
}
uint32_t * frequency = (uint32_t *)&frame[4];
int8_t * power = (int8_t *)&frame[8];
// center = 2500000000
// left = 2500000000 - 5000
// span = 10000
FREQUENCY = *frequency;
POWER = *power;
// reusableBuffer.spectrum.bars[(*frequency - (2500000000 - 5000)) * 128 / 10000] = 127 + *power;
}
void processRadioFrame(uint8_t module, uint8_t * frame)
{
switch (frame[2]) {
@ -142,6 +166,19 @@ void processRadioFrame(uint8_t module, uint8_t * frame)
}
}
void processPowerMeterFrame(uint8_t module, uint8_t * frame)
{
switch (frame[2]) {
case PXX2_TYPE_ID_POWER_METER:
// TODO
break;
case PXX2_TYPE_ID_SPECTRUM:
processSpectrumFrame(module, frame);
break;
}
}
void processModuleFrame(uint8_t module, uint8_t * frame)
{
switch (frame[1]) {
@ -149,6 +186,10 @@ void processModuleFrame(uint8_t module, uint8_t * frame)
processRadioFrame(module, frame);
break;
case PXX2_TYPE_C_POWER_METER:
processPowerMeterFrame(module, frame);
break;
default:
break;
}