From bb71ec35f57a68bbf9bddd9f5bff5428fc2bdefb Mon Sep 17 00:00:00 2001 From: DiSlord Date: Mon, 3 May 2021 08:54:15 +0300 Subject: [PATCH] Use one offset api call --- si4468.c | 65 +++++++++++++++++++------------------------------------- 1 file changed, 22 insertions(+), 43 deletions(-) diff --git a/si4468.c b/si4468.c index f52cd07..20023ec 100644 --- a/si4468.c +++ b/si4468.c @@ -1082,22 +1082,19 @@ void set_RSSI_comp(void) // MODEM_RSSI_COMP - RSSI compensation value. // // #define RF_MODEM_RSSI_COMP_1 0x11, 0x20, 0x01, 0x4E, 0x40 - uint8_t data[5] = { - 0x11, - 0x20, - 0x01, - 0x4E, - 0x40 + SI446X_CMD_SET_PROPERTY, + SI446X_PROP_GROUP_MODEM, + 0x01, + 0x4E, // MODEM_RSSI_COMP set as + 0x40 // RSSI_COMP }; SI4463_do_api(data, sizeof(data), NULL, 0); } -int SI4463_offset_active = false; - -void si_set_offset(int16_t offset) -{ +bool SI4463_offset_active = false; +static void SI4463_set_offset(int16_t offset){ // Set properties: MODEM_FREQ_OFFSET // Number of properties: 2 // Group ID: 0x20 @@ -1107,49 +1104,31 @@ void si_set_offset(int16_t offset) // MODEM_FREQ_OFFSET1 - High byte of the offset // MODEM_FREQ_OFFSET2 - Low byte of the offset // - - SI4463_offset_value = offset; uint8_t data[] = { - 0x11, - 0x20, - 0x02, - 0x0d, - (uint8_t) ((offset>>8) & 0xff), - (uint8_t) ((offset) & 0xff) + SI446X_CMD_SET_PROPERTY, + SI446X_PROP_GROUP_MODEM, + 0x02, + 0x0d, // MODEM_FREQ_OFFSET + (uint8_t) ((offset>>8) & 0xff), + (uint8_t) ((offset) & 0xff) }; SI4463_do_api(data, sizeof(data), NULL, 0); SI4463_offset_changed = true; SI4463_offset_active = (offset != 0); } +// Set offset for frequency +void si_set_offset(int16_t offset) +{ + SI4463_offset_value = offset; + SI4463_set_offset(offset); +} +// Set additional offset for fm modulation output void si_fm_offset(int16_t offset) { - // Set properties: MODEM_FREQ_OFFSET - // Number of properties: 2 - // Group ID: 0x20 - // Start ID: 0x0d - // Default values: 0x00, 0x00 - // Descriptions: - // MODEM_FREQ_OFFSET1 - High byte of the offset - // MODEM_FREQ_OFFSET2 - Low byte of the offset - // - - offset = SI4463_offset_value + offset; - - - - uint8_t data[] = { - 0x11, - 0x20, - 0x02, - 0x0d, - (uint8_t) ((offset>>8) & 0xff), - (uint8_t) ((offset) & 0xff) - }; - SI4463_do_api(data, sizeof(data), NULL, 0); - SI4463_offset_changed = true; - SI4463_offset_active = (offset != 0); + SI4463_set_offset(offset + SI4463_offset_value); } + #ifdef __FAST_SWEEP__ extern deviceRSSI_t age[POINTS_COUNT]; static int buf_index = 0;