mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
In progress ...
This commit is contained in:
parent
8f9fcca0c4
commit
dfd12ff978
9 changed files with 155 additions and 17 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue