From 352d529b8611ac0704bc6f8944c859b830211a09 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sun, 5 Nov 2023 23:16:19 +0000 Subject: [PATCH] added mdc1200 side tone/beeps --- Makefile | 12 +- README.md | 1 + am_fix.c | 2 +- app/aircopy.c | 42 +-- app/app.c | 16 +- app/menu.c | 2 +- app/search.c | 11 +- app/uart.c | 6 +- audio.c | 6 +- driver/bk4819.c | 699 ++++++++++++++++++++++---------------------- driver/bk4819.h | 10 +- firmware.bin | Bin 60300 -> 58836 bytes firmware.packed.bin | Bin 60318 -> 58854 bytes functions.c | 20 +- main.c | 2 +- mdc1200.c | 18 +- radio.c | 49 +++- settings.c | 4 +- 18 files changed, 460 insertions(+), 440 deletions(-) diff --git a/Makefile b/Makefile index 24c0845..c0a2cab 100644 --- a/Makefile +++ b/Makefile @@ -14,14 +14,14 @@ ENABLE_LTO := 1 ENABLE_UART := 1 ENABLE_UART_DEBUG := 0 # AirCopy 2.5 kB -ENABLE_AIRCOPY := 0 +ENABLE_AIRCOPY := 1 ENABLE_AIRCOPY_REMEMBER_FREQ := 1 ENABLE_AIRCOPY_RX_REBOOT := 0 # FM Radio 4.2 kB ENABLE_FMRADIO_64_76 := 0 ENABLE_FMRADIO_76_90 := 0 ENABLE_FMRADIO_76_108 := 0 -ENABLE_FMRADIO_875_108 := 1 +ENABLE_FMRADIO_875_108 := 0 ENABLE_FMRADIO_64_108 := 0 # NOAA 1.2 kB ENABLE_NOAA := 0 @@ -29,14 +29,14 @@ ENABLE_NOAA := 0 ENABLE_VOICE := 0 ENABLE_MUTE_RADIO_FOR_VOICE := 0 # Tx on Voice 1.0 kB -ENABLE_VOX := 1 +ENABLE_VOX := 0 ENABLE_VOX_MORE_SENSITIVE := 1 ENABLE_REDUCE_LOW_MID_TX_POWER := 1 # Tx Alarm 600 B ENABLE_ALARM := 0 ENABLE_TX1750 := 0 # MDC1200 2.8 kB -ENABLE_MDC1200 := 0 +ENABLE_MDC1200 := 1 ENABLE_MDC1200_SHOW_OP_ARG := 1 ENABLE_PWRON_PASSWORD := 0 ENABLE_RESET_AES_KEY := 0 @@ -60,6 +60,7 @@ ENABLE_DTMF_CALL_FLASH_LIGHT := 1 ENABLE_FLASH_LIGHT_SOS_TONE := 1 ENABLE_SHOW_CHARGE_LEVEL := 0 ENABLE_REVERSE_BAT_SYMBOL := 1 +ENABLE_FREQ_SEARCH_LNA := 1 ENABLE_FREQ_SEARCH_TIMEOUT := 0 ENABLE_CODE_SEARCH_TIMEOUT := 0 ENABLE_SCAN_IGNORE_LIST := 1 @@ -415,6 +416,9 @@ endif ifeq ($(ENABLE_KILL_REVIVE),1) CFLAGS += -DENABLE_KILL_REVIVE endif +ifeq ($(ENABLE_FREQ_SEARCH_LNA),1) + CFLAGS += -DENABLE_FREQ_SEARCH_LNA +endif ifeq ($(ENABLE_FREQ_SEARCH_TIMEOUT),1) CFLAGS += -DENABLE_FREQ_SEARCH_TIMEOUT endif diff --git a/README.md b/README.md index 16e368e..411af92 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ ENABLE_DTMF_CALL_FLASH_LIGHT := 1 flash the flash light LED when a DTM ENABLE_FLASH_LIGHT_SOS_TONE := 1 also do SOS in morse ENABLE_SHOW_CHARGE_LEVEL := 0 show the charge level when the radio is on charge ENABLE_REVERSE_BAT_SYMBOL := 1 mirror the battery symbol on the status bar (+ pole on the right) +ENABLE_FREQ_SEARCH_LNA := 0 keep this disabled ENABLE_FREQ_SEARCH_TIMEOUT := 0 timeout if FREQ not found when using F+4 search function ENABLE_CODE_SEARCH_TIMEOUT := 0 timeout if CTCSS/CDCSS not found when using F+* search function ENABLE_SCAN_IGNORE_LIST := 0 ignore selected frequencies when scanning - add freqs to list with short */scan button when scanning, remove freq from list with long press MENU when not scanning diff --git a/am_fix.c b/am_fix.c index d6c46a8..d57c9c9 100644 --- a/am_fix.c +++ b/am_fix.c @@ -427,7 +427,7 @@ void AM_fix_10ms(const int vfo) gain_table_index_prev[vfo] = index; // set the RF front end gains - BK4819_WriteRegister(0x13, gain_table[index].reg_val); + BK4819_write_reg(0x13, gain_table[index].reg_val); // offset the RSSI reading to the rest of the firmware to cancel out the gain adjustments we make diff --git a/app/aircopy.c b/app/aircopy.c index a47e664..b3e3961 100644 --- a/app/aircopy.c +++ b/app/aircopy.c @@ -164,7 +164,7 @@ void AIRCOPY_start_fsk_tx(const int request_block_num) // 0 = enable // 1 = disable // -// BK4819_WriteRegister(0x2B, (1u << 2) | (1u << 0)); // try to improve the TX waveform +// BK4819_write_reg(0x2B, (1u << 2) | (1u << 0)); // try to improve the TX waveform // REG_59 // @@ -218,21 +218,21 @@ void AIRCOPY_start_fsk_tx(const int request_block_num) (0u << 0); // 0 ~ 7 ??? // set the packet size - BK4819_WriteRegister(0x5D, (((tx_size * 2) - 1) << 8)); + BK4819_write_reg(0x5D, (((tx_size * 2) - 1) << 8)); // clear TX fifo - BK4819_WriteRegister(0x59, (1u << 15) | fsk_reg59); - BK4819_WriteRegister(0x59, fsk_reg59); + BK4819_write_reg(0x59, (1u << 15) | fsk_reg59); + BK4819_write_reg(0x59, fsk_reg59); // load the packet for (k = 0; k < tx_size; k++) - BK4819_WriteRegister(0x5F, g_fsk_buffer[k]); + BK4819_write_reg(0x5F, g_fsk_buffer[k]); // enable tx interrupt(s) - BK4819_WriteRegister(0x3F, BK4819_REG_3F_FSK_TX_FINISHED); + BK4819_write_reg(0x3F, BK4819_REG_3F_FSK_TX_FINISHED); // enable scramble, enable TX - BK4819_WriteRegister(0x59, (1u << 13) | (1u << 11) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 13) | (1u << 11) | fsk_reg59); } void AIRCOPY_stop_fsk_tx(void) @@ -250,7 +250,7 @@ void AIRCOPY_stop_fsk_tx(void) BK4819_reset_fsk(); // restore TX/RX filtering - BK4819_WriteRegister(0x2B, 0); + BK4819_write_reg(0x2B, 0); if (g_aircopy_state == AIRCOPY_TX) { @@ -303,10 +303,10 @@ void AIRCOPY_process_fsk_tx_10ms(void) if (--g_fsk_tx_timeout_10ms > 0) { // still TX'ing - if ((BK4819_ReadRegister(0x0C) & (1u << 0)) == 0) + if ((BK4819_read_reg(0x0C) & (1u << 0)) == 0) return; - BK4819_WriteRegister(0x02, 0); - interrupt_bits = BK4819_ReadRegister(0x02); + BK4819_write_reg(0x02, 0); + interrupt_bits = BK4819_read_reg(0x02); if ((interrupt_bits & BK4819_REG_02_FSK_TX_FINISHED) == 0) return; // TX not yet finished } @@ -378,7 +378,7 @@ void AIRCOPY_process_fsk_rx_10ms(void) // // <2:0> 0 ??? // - status = BK4819_ReadRegister(0x59); + status = BK4819_read_reg(0x59); if (status & (1u << 11) || g_fsk_tx_timeout_10ms > 0) return; // FSK TX is busy @@ -390,13 +390,13 @@ void AIRCOPY_process_fsk_rx_10ms(void) BK4819_start_aircopy_fsk_rx((g_aircopy_state == AIRCOPY_TX) ? AIRCOPY_REQ_PACKET_SIZE : AIRCOPY_DATA_PACKET_SIZE); } - status = BK4819_ReadRegister(0x0C); + status = BK4819_read_reg(0x0C); if ((status & (1u << 0)) == 0) return; // no flagged interrupts // read the interrupt flags - BK4819_WriteRegister(0x02, 0); // clear them - interrupt_bits = BK4819_ReadRegister(0x02); + BK4819_write_reg(0x02, 0); // clear them + interrupt_bits = BK4819_read_reg(0x02); if (interrupt_bits & BK4819_REG_02_FSK_RX_SYNC) BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, true); // LED on @@ -410,10 +410,10 @@ void AIRCOPY_process_fsk_rx_10ms(void) BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, true); // LED on { // fetch RX'ed data - const unsigned int count = BK4819_ReadRegister(0x5E) & (7u << 0); // almost full threshold + const unsigned int count = BK4819_read_reg(0x5E) & (7u << 0); // almost full threshold for (i = 0; i < count; i++) { - const uint16_t word = BK4819_ReadRegister(0x5F); + const uint16_t word = BK4819_read_reg(0x5F); if (g_fsk_write_index < ARRAY_SIZE(g_fsk_buffer)) g_fsk_buffer[g_fsk_write_index++] = word; @@ -438,7 +438,7 @@ void AIRCOPY_process_fsk_rx_10ms(void) // // <3:0> ??? // - status = BK4819_ReadRegister(0x0B); + status = BK4819_read_reg(0x0B); // check to see if it's a REQ/ACK packet if (g_fsk_write_index == req_ack_size) @@ -636,10 +636,10 @@ send_req: while (g_fsk_tx_timeout_10ms-- > 0) { SYSTEM_DelayMs(5); - if (BK4819_ReadRegister(0x0C) & (1u << 0)) + if (BK4819_read_reg(0x0C) & (1u << 0)) { // we have interrupt flags - BK4819_WriteRegister(0x02, 0); - const uint16_t interrupt_bits = BK4819_ReadRegister(0x02); + BK4819_write_reg(0x02, 0); + const uint16_t interrupt_bits = BK4819_read_reg(0x02); if (interrupt_bits & BK4819_REG_02_FSK_TX_FINISHED) g_fsk_tx_timeout_10ms = 0; // TX is complete } diff --git a/app/app.c b/app/app.c index d7944db..e398769 100644 --- a/app/app.c +++ b/app/app.c @@ -162,10 +162,10 @@ done: #ifdef ENABLE_MDC1200 { // reset the FSK receiver - //const uint16_t fsk_reg59 = BK4819_ReadRegister(0x59) & ~((1u << 15) | (1u << 14) | (1u << 12) | (1u << 11)); + //const uint16_t fsk_reg59 = BK4819_read_reg(0x59) & ~((1u << 15) | (1u << 14) | (1u << 12) | (1u << 11)); // BK4819_enable_mdc1200_rx(true); - //BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); - //BK4819_WriteRegister(0x59, (1u << 12) | fsk_reg59); + //BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); + //BK4819_write_reg(0x59, (1u << 12) | fsk_reg59); } #endif } @@ -529,11 +529,11 @@ bool APP_start_listening(void) // AF gain - original QS values // if (g_rx_vfo->channel.am_mode > 0) // { -// BK4819_WriteRegister(0x48, 0xB3A8); // 1011 0011 1010 1000 +// BK4819_write_reg(0x48, 0xB3A8); // 1011 0011 1010 1000 // } // else { - BK4819_WriteRegister(0x48, + BK4819_write_reg(0x48, (11u << 12) | // ??? .. 0 ~ 15, doesn't seem to make any difference ( 0u << 10) | // AF Rx Gain-1 (g_eeprom.calib.volume_gain << 4) | // AF Rx Gain-2 @@ -910,12 +910,12 @@ void APP_process_radio_interrupts(void) uint16_t int_bits; - const uint16_t reg_c = BK4819_ReadRegister(0x0C); + const uint16_t reg_c = BK4819_read_reg(0x0C); if ((reg_c & 1u) == 0) break; - BK4819_WriteRegister(0x02, 0); - int_bits = BK4819_ReadRegister(0x02); + BK4819_write_reg(0x02, 0); + int_bits = BK4819_read_reg(0x02); #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) #ifdef ENABLE_AIRCOPY diff --git a/app/menu.c b/app/menu.c index c74375b..1c51411 100644 --- a/app/menu.c +++ b/app/menu.c @@ -50,7 +50,7 @@ #ifdef ENABLE_F_CAL_MENU void writeXtalFreqCal(const int32_t value, const bool update_eeprom) { - BK4819_WriteRegister(0x3B, 22656 + value); + BK4819_write_reg(0x3B, 22656 + value); if (update_eeprom) { diff --git a/app/search.c b/app/search.c index 5f01fa8..9ad8361 100644 --- a/app/search.c +++ b/app/search.c @@ -637,11 +637,14 @@ void SEARCH_Start(void) g_search_css_state = SEARCH_CSS_STATE_OFF; g_search_frequency = 0xFFFFFFFF; -#if 1 - // this is why it needs such a strong signal - BK4819_set_rf_filter_path(0xFFFFFFFF); // disable the LNA filter paths - why it needs a strong signal -#else +#ifdef ENABLE_FREQ_SEARCH_LNA + // 1of11 + // still requires strong signal >= -40dBm at LNA input, but MUCH more sensitive that QS way BK4819_set_rf_filter_path(g_rx_vfo->p_rx->frequency); // lets have a play ! +#else + // QS + // this is why it needs such a strong signal + BK4819_set_rf_filter_path(0xFFFFFFFF); // disable the LNA filter paths #endif BK4819_EnableFrequencyScan(); diff --git a/app/uart.c b/app/uart.c index dbc7d27..31803ef 100644 --- a/app/uart.c +++ b/app/uart.c @@ -386,9 +386,9 @@ static void cmd_0527(void) memset(&reply, 0, sizeof(reply)); reply.Header.ID = 0x0528; reply.Header.Size = sizeof(reply.Data); - reply.Data.RSSI = BK4819_ReadRegister(0x67) & 0x01FF; - reply.Data.ExNoiseIndicator = BK4819_ReadRegister(0x65) & 0x007F; - reply.Data.GlitchIndicator = BK4819_ReadRegister(0x63); + reply.Data.RSSI = BK4819_read_reg(0x67) & 0x01FF; + reply.Data.ExNoiseIndicator = BK4819_read_reg(0x65) & 0x007F; + reply.Data.GlitchIndicator = BK4819_read_reg(0x63); SendReply(&reply, sizeof(reply)); } diff --git a/audio.c b/audio.c index 735fae9..9e01dd5 100644 --- a/audio.c +++ b/audio.c @@ -93,8 +93,8 @@ void AUDIO_set_mod_mode(const unsigned int mode) void AUDIO_PlayBeep(beep_type_t Beep) { - const uint16_t tone_val = BK4819_ReadRegister(0x71); -// const uint16_t af_val = BK4819_ReadRegister(0x47); + const uint16_t tone_val = BK4819_read_reg(0x71); +// const uint16_t af_val = BK4819_read_reg(0x47); uint16_t ToneFrequency; uint16_t Duration; @@ -238,7 +238,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) BK4819_TurnsOffTones_TurnsOnRX(); SYSTEM_DelayMs(2); - BK4819_WriteRegister(0x71, tone_val); + BK4819_write_reg(0x71, tone_val); #ifdef ENABLE_FMRADIO if (g_fm_radio_mode) diff --git a/driver/bk4819.c b/driver/bk4819.c index 08131d7..e69979c 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -57,11 +57,11 @@ void BK4819_Init(void) GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); // reset the chip - BK4819_WriteRegister(0x00, (1u << 15)); - BK4819_WriteRegister(0x00, 0); + BK4819_write_reg(0x00, (1u << 15)); + BK4819_write_reg(0x00, 0); - BK4819_WriteRegister(0x37, 0x1D0F); - BK4819_WriteRegister(0x36, 0x0022); + BK4819_write_reg(0x37, 0x1D0F); + BK4819_write_reg(0x36, 0x0022); #ifdef ENABLE_AM_FIX BK4819_DisableAGC(); @@ -89,72 +89,70 @@ void BK4819_Init(void) // 15 = max // 0 = min // - BK4819_WriteRegister(0x48, // 0xB3A8); // 1011 00 111010 1000 + BK4819_write_reg(0x48, // 0xB3A8); // 1011 00 111010 1000 (11u << 12) | // ??? 0..15 ( 0u << 10) | // AF Rx Gain-1 (58u << 4) | // AF Rx Gain-2 ( 8u << 0)); // AF DAC Gain (after Gain-1 and Gain-2) // squelch mode -// BK4819_WriteRegister(0x77, 0x88EF); // rssi + noise + glitch .. RT-890 -// BK4819_WriteRegister(0x77, 0xA8EF); // rssi + noise + glitch .. default - BK4819_WriteRegister(0x77, 0xAAEF); // rssi + glitch -// BK4819_WriteRegister(0x77, 0xCCEF); // rssi + noise -// BK4819_WriteRegister(0x77, 0xFFEF); // rssi +// BK4819_write_reg(0x77, 0x88EF); // rssi + noise + glitch .. RT-890 +// BK4819_write_reg(0x77, 0xA8EF); // rssi + noise + glitch .. default + BK4819_write_reg(0x77, 0xAAEF); // rssi + glitch +// BK4819_write_reg(0x77, 0xCCEF); // rssi + noise +// BK4819_write_reg(0x77, 0xFFEF); // rssi BK4819_config_sub_audible(); - + const uint8_t dtmf_coeffs[] = {111, 107, 103, 98, 80, 71, 58, 44, 65, 55, 37, 23, 228, 203, 181, 159}; for (unsigned int i = 0; i < ARRAY_SIZE(dtmf_coeffs); i++) - BK4819_WriteRegister(0x09, (i << 12) | dtmf_coeffs[i]); + BK4819_write_reg(0x09, (i << 12) | dtmf_coeffs[i]); - BK4819_WriteRegister(0x1F, 0x5454); // 0101 0100 01 01 0100 - BK4819_WriteRegister(0x3E, 41015); // band selection threshold = VCO max frequency (Hz) / 96 / 640 - BK4819_WriteRegister(0x33, 0x9000); // 1001 0000 0000 0000 .. GPIO - BK4819_WriteRegister(0x3F, 0); // disable interrupts + BK4819_write_reg(0x1F, 0x5454); // 0101 0100 01 01 0100 + BK4819_write_reg(0x3E, 41015); // band selection threshold = VCO max frequency (Hz) / 96 / 640 + BK4819_write_reg(0x33, 0x9000); // 1001 0000 0000 0000 .. GPIO + BK4819_write_reg(0x3F, 0); // disable interrupts #if 0 // RT-890 -// BK4819_WriteRegister(0x37, 0x1D0F); +// BK4819_write_reg(0x37, 0x1D0F); // DisableAGC(0); - BK4819_WriteRegister(0x13, 0x03BE); - BK4819_WriteRegister(0x12, 0x037B); - BK4819_WriteRegister(0x11, 0x027B); - BK4819_WriteRegister(0x10, 0x007A); - BK4819_WriteRegister(0x14, 0x0019); - BK4819_WriteRegister(0x49, 0x2A38); - BK4819_WriteRegister(0x7B, 0x8420); + BK4819_write_reg(0x13, 0x03BE); + BK4819_write_reg(0x12, 0x037B); + BK4819_write_reg(0x11, 0x027B); + BK4819_write_reg(0x10, 0x007A); + BK4819_write_reg(0x14, 0x0019); + BK4819_write_reg(0x49, 0x2A38); + BK4819_write_reg(0x7B, 0x8420); - BK4819_WriteRegister(0x1E, 0x4C58); // ??? - BK4819_WriteRegister(0x2A, 0x4F18); // ??? - BK4819_WriteRegister(0x53, 0xE678); // ??? - BK4819_WriteRegister(0x2C, 0x5705); // ??? - BK4819_WriteRegister(0x4B, 0x7102); // AF gains - BK4819_WriteRegister(0x26, 0x13A0); // ??? + BK4819_write_reg(0x1E, 0x4C58); // ??? + BK4819_write_reg(0x2A, 0x4F18); // ??? + BK4819_write_reg(0x53, 0xE678); // ??? + BK4819_write_reg(0x2C, 0x5705); // ??? + BK4819_write_reg(0x4B, 0x7102); // AF gains + BK4819_write_reg(0x26, 0x13A0); // ??? #endif } -static uint16_t BK4819_ReadU16(void) +static uint16_t BK4819_read_16(void) { unsigned int i; - uint16_t Value; + uint16_t Value = 0; PORTCON_PORTC_IE = (PORTCON_PORTC_IE & ~PORTCON_PORTC_IE_C2_MASK) | PORTCON_PORTC_IE_C2_BITS_ENABLE; GPIOC->DIR = (GPIOC->DIR & ~GPIO_DIR_2_MASK) | GPIO_DIR_2_BITS_INPUT; - SYSTICK_Delay250ns(4); - - Value = 0; + SYSTICK_Delay250ns(1); // 4 for (i = 0; i < 16; i++) { Value <<= 1; Value |= GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 } PORTCON_PORTC_IE = (PORTCON_PORTC_IE & ~PORTCON_PORTC_IE_C2_MASK) | PORTCON_PORTC_IE_C2_BITS_DISABLE; GPIOC->DIR = (GPIOC->DIR & ~GPIO_DIR_2_MASK) | GPIO_DIR_2_BITS_OUTPUT; @@ -162,43 +160,37 @@ static uint16_t BK4819_ReadU16(void) return Value; } -uint16_t BK4819_ReadRegister(const uint8_t Register) +uint16_t BK4819_read_reg(const uint8_t Register) { uint16_t Value; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - - SYSTICK_Delay250ns(4); - + SYSTICK_Delay250ns(1); // 4 GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); - BK4819_WriteU8(Register | 0x80); - Value = BK4819_ReadU16(); + BK4819_write_8(Register | 0x80); + Value = BK4819_read_16(); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); - - SYSTICK_Delay250ns(4); - + SYSTICK_Delay250ns(1); // 4 GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); - return Value; } -void BK4819_WriteRegister(const uint8_t Register, uint16_t Data) +void BK4819_write_reg(const uint8_t Register, uint16_t Data) { GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); - BK4819_WriteU8(Register); - BK4819_WriteU16(Data); + BK4819_write_8(Register); + BK4819_write_16(Data); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCN); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); } -void BK4819_WriteU8(uint8_t Data) +void BK4819_write_8(uint8_t Data) { unsigned int i; @@ -209,22 +201,18 @@ void BK4819_WriteU8(uint8_t Data) GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); else GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); - - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); - + SYSTICK_Delay250ns(1); // 4 Data <<= 1; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 } } -void BK4819_WriteU16(uint16_t Data) +void BK4819_write_16(uint16_t Data) { unsigned int i; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); for (i = 0; i < 16; i++) { @@ -232,25 +220,23 @@ void BK4819_WriteU16(uint16_t Data) GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); else GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SDA); - - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - Data <<= 1; - - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_BK4819_SCL); - SYSTICK_Delay250ns(4); + SYSTICK_Delay250ns(1); // 4 } } + void BK4819_EnableAFC(void) { - BK4819_WriteRegister(0x73, (0u << 11) | (0u << 4)); + BK4819_write_reg(0x73, (0u << 11) | (0u << 4)); } void BK4819_DisableAFC(void) { - BK4819_WriteRegister(0x73, (0u << 11) | (1u << 4)); + BK4819_write_reg(0x73, (0u << 11) | (1u << 4)); } void BK4819_DisableAGC(void) @@ -269,7 +255,7 @@ void BK4819_DisableAGC(void) // <2:0> 0b110 DC Filter Band Width for Rx (IF In). // 000=Bypass DC filter; // - BK4819_WriteRegister(0x7E, // 0x302E 0 011 000000 101 110 + BK4819_write_reg(0x7E, // 0x302E 0 011 000000 101 110 // (1u << 15) | // 0 AGC fix mode (0u << 15) | // 0 AGC fix mode (3u << 12) | // 3 AGC fix index @@ -314,15 +300,15 @@ void BK4819_DisableAGC(void) // 1 = -27dB // 0 = -33dB // - BK4819_WriteRegister(0x13, (3u << 8) | (5u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 - BK4819_WriteRegister(0x12, 0x037B); // 000000 11 011 11 011 - BK4819_WriteRegister(0x11, 0x027B); // 000000 10 011 11 011 - BK4819_WriteRegister(0x10, 0x007A); // 000000 00 011 11 010 - BK4819_WriteRegister(0x14, 0x0019); // 000000 00 000 11 001 + BK4819_write_reg(0x13, (3u << 8) | (5u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 + BK4819_write_reg(0x12, 0x037B); // 000000 11 011 11 011 + BK4819_write_reg(0x11, 0x027B); // 000000 10 011 11 011 + BK4819_write_reg(0x10, 0x007A); // 000000 00 011 11 010 + BK4819_write_reg(0x14, 0x0019); // 000000 00 000 11 001 // ??? - BK4819_WriteRegister(0x49, 0x2A38); - BK4819_WriteRegister(0x7B, 0x8420); + BK4819_write_reg(0x49, 0x2A38); + BK4819_write_reg(0x7B, 0x8420); } void BK4819_EnableAGC(void) @@ -344,7 +330,7 @@ void BK4819_EnableAGC(void) // <2:0> 0b110 DC Filter Band Width for Rx (IF In). // 000=Bypass DC filter; - BK4819_WriteRegister(0x7E, + BK4819_write_reg(0x7E, (0u << 15) | // 0 AGC fix mode (3u << 12) | // 3 AGC fix index (5u << 3) | // 5 DC Filter band width for Tx (MIC In) @@ -360,20 +346,20 @@ void BK4819_EnableAGC(void) // <7:0> 0xFF LNA Peak RSSI // // TBR: Using S9+30 (173) and S9 (143) as suggested values - BK4819_WriteRegister(0x62, (173u << 8) | (143u << 0)); + BK4819_write_reg(0x62, (173u << 8) | (143u << 0)); // AGC auto-adjusts the following LNA values, no need to set them ourselves - //BK4819_WriteRegister(0x13, (3u << 8) | (5u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 - //BK4819_WriteRegister(0x12, 0x037B); // 000000 11 011 11 011 - //BK4819_WriteRegister(0x11, 0x027B); // 000000 10 011 11 011 - //BK4819_WriteRegister(0x10, 0x007A); // 000000 00 011 11 010 - //BK4819_WriteRegister(0x14, 0x0019); // 000000 00 000 11 001 + //BK4819_write_reg(0x13, (3u << 8) | (5u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 + //BK4819_write_reg(0x12, 0x037B); // 000000 11 011 11 011 + //BK4819_write_reg(0x11, 0x027B); // 000000 10 011 11 011 + //BK4819_write_reg(0x10, 0x007A); // 000000 00 011 11 010 + //BK4819_write_reg(0x14, 0x0019); // 000000 00 000 11 001 - BK4819_WriteRegister(0x49, 0x2A38); - BK4819_WriteRegister(0x7B, 0x8420); + BK4819_write_reg(0x49, 0x2A38); + BK4819_write_reg(0x7B, 0x8420); for (unsigned int i = 0; i < 8; i++) - BK4819_WriteRegister(0x06, ((i & 7u) << 13) | (0x4A << 7) | (0x36 << 0)); + BK4819_write_reg(0x06, ((i & 7u) << 13) | (0x4A << 7) | (0x36 << 0)); } void BK4819_set_GPIO_pin(bk4819_gpio_pin_t Pin, bool bSet) @@ -383,7 +369,7 @@ void BK4819_set_GPIO_pin(bk4819_gpio_pin_t Pin, bool bSet) else g_bk4819_gpio_out_state &= ~(0x40u >> Pin); - BK4819_WriteRegister(0x33, g_bk4819_gpio_out_state); + BK4819_write_reg(0x33, g_bk4819_gpio_out_state); } void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold) @@ -399,25 +385,25 @@ void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold) VoxDisableThreshold = 2047; // 0xA000 is undocumented - BK4819_WriteRegister(0x46, (20u << 11) | VoxEnableThreshold); // ???, amp threshold for vox on + BK4819_write_reg(0x46, (20u << 11) | VoxEnableThreshold); // ???, amp threshold for vox on - BK4819_WriteRegister(0x79, (3u << 11) | VoxDisableThreshold); // vox det interval time, amp threshold for vox off + BK4819_write_reg(0x79, (3u << 11) | VoxDisableThreshold); // vox det interval time, amp threshold for vox off // Bottom 12 bits are undocumented, 15:12 vox disable delay *128ms - BK4819_WriteRegister(0x7A, (2u << 12) | 0x089A); // vox disable delay = 128*5 = 640ms + BK4819_write_reg(0x7A, (2u << 12) | 0x089A); // vox disable delay = 128*5 = 640ms // 0010 100010011010 // Enable VOX - BK4819_WriteRegister(0x31, BK4819_ReadRegister(0x31) | (1u << 2)); + BK4819_write_reg(0x31, BK4819_read_reg(0x31) | (1u << 2)); } void BK4819_set_TX_deviation(const bool narrow) { - const uint8_t scrambler = (BK4819_ReadRegister(0x31) >> 1) & 1u; + const uint8_t scrambler = (BK4819_read_reg(0x31) >> 1) & 1u; uint16_t deviation = narrow ? 900 : 1232; // 0 ~ 4095 if (scrambler) deviation -= 200; - BK4819_WriteRegister(0x40, (3u << 12) | deviation); + BK4819_write_reg(0x40, (3u << 12) | deviation); } void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth) @@ -447,7 +433,7 @@ void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth) // 7 = 4.5 kHz // if <5> == 1, RF filter bandwidth * 2 // - // <8:6> 1 AFTxLPF2 filter Band Width + // <8:6> 1 AF-TX-LPF-2 filter band width // 1 = 2.5 kHz (for 12.5k channel space) // 2 = 2.75 kHz // 0 = 3.0 kHz (for 25k channel space) @@ -473,50 +459,50 @@ void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth) uint16_t val; m_bandwidth = Bandwidth; - + // when received signal is weak, the RX bandwidth is reduced switch (Bandwidth) { default: - case BK4819_FILTER_BW_WIDE: // 25kHz + case BK4819_FILTER_BW_WIDE: // 25kHz val = // 0x3028); // 0 011 000 000 10 1 0 00 - (0u << 15) | // 0 - (4u << 12) | // *3 RF filter bandwidth - (2u << 9) | // *0 RF filter bandwidth when signal is weak - (6u << 6) | // *0 AFTxLPF2 filter Band Width - (2u << 4) | // 2 BW Mode Selection - (1u << 3) | // 1 - (0u << 2) | // 0 Gain after FM Demodulation - (0u << 0); // 0 + (0u << 15) | // 0 + (4u << 12) | // 3 RF filter bandwidth + (2u << 9) | // 0 RF filter bandwidth when signal is weak + (3u << 6) | // 0 AF-TX-LPF-2 filter band width + (2u << 4) | // 2 BW Mode Selection + (1u << 3) | // 1 + (0u << 2) | // 0 Gain after FM Demodulation + (0u << 0); // 0 break; case BK4819_FILTER_BW_NARROW: // 12.5kHz val = - (0u << 15) | // 0 - (4u << 12) | // *4 RF filter bandwidth - (2u << 9) | // *0 RF filter bandwidth when signal is weak - (0u << 6) | // *1 AFTxLPF2 filter Band Width - (0u << 4) | // 0 BW Mode Selection - (1u << 3) | // 1 - (0u << 2) | // 0 Gain after FM Demodulation - (0u << 0); // 0 + (0u << 15) | // 0 + (4u << 12) | // 4 RF filter bandwidth + (2u << 9) | // 0 RF filter bandwidth when signal is weak + (2u << 6) | // 1 AF-TX-LPF-2 filter Band Width + (0u << 4) | // 0 BW Mode Selection + (1u << 3) | // 1 + (0u << 2) | // 0 Gain after FM Demodulation + (0u << 0); // 0 break; case BK4819_FILTER_BW_NARROWER: // 6.25kHz val = - (0u << 15) | // 0 - (3u << 12) | // 3 RF filter bandwidth - (2u << 9) | // *0 RF filter bandwidth when signal is weak - (1u << 6) | // 1 AFTxLPF2 filter Band Width - (1u << 4) | // 1 BW Mode Selection - (1u << 3) | // 1 - (0u << 2) | // 0 Gain after FM Demodulation - (0u << 0); // 0 + (0u << 15) | // 0 + (3u << 12) | // 3 RF filter bandwidth + (2u << 9) | // 0 RF filter bandwidth when signal is weak + (1u << 6) | // 1 AF-TX-LPF-2 filter Band Width + (1u << 4) | // 1 BW Mode Selection + (1u << 3) | // 1 + (0u << 2) | // 0 Gain after FM Demodulation + (0u << 0); // 0 break; } - BK4819_WriteRegister(0x43, val); + BK4819_write_reg(0x43, val); } void BK4819_SetupPowerAmplifier(const uint8_t bias, const uint32_t frequency) @@ -540,19 +526,19 @@ void BK4819_SetupPowerAmplifier(const uint8_t bias, const uint32_t frequency) // 280MHz gain 1 = 1 gain 2 = 0 gain 1 = 4 gain 2 = 2 const uint8_t gain = (frequency == 0) ? 0 : (frequency < rf_filter_transition_freq) ? (1u << 3) | (0u << 0) : (4u << 3) | (2u << 0); const uint8_t enable = 1; - BK4819_WriteRegister(0x36, ((uint16_t)bias << 8) | ((uint16_t)enable << 7) | ((uint16_t)gain << 0)); + BK4819_write_reg(0x36, ((uint16_t)bias << 8) | ((uint16_t)enable << 7) | ((uint16_t)gain << 0)); } void BK4819_set_rf_frequency(const uint32_t frequency, const bool trigger_update) { - BK4819_WriteRegister(0x38, (frequency >> 0) & 0xFFFF); - BK4819_WriteRegister(0x39, (frequency >> 16) & 0xFFFF); + BK4819_write_reg(0x38, (frequency >> 0) & 0xFFFF); + BK4819_write_reg(0x39, (frequency >> 16) & 0xFFFF); if (trigger_update) { // trigger a PLL/VCO update - const uint16_t reg = BK4819_ReadRegister(0x30); - BK4819_WriteRegister(0x30, reg & ~BK4819_REG_30_ENABLE_VCO_CALIB); - BK4819_WriteRegister(0x30, reg); + const uint16_t reg = BK4819_read_reg(0x30); + BK4819_write_reg(0x30, reg & ~BK4819_REG_30_ENABLE_VCO_CALIB); + BK4819_write_reg(0x30, reg); } } @@ -580,13 +566,13 @@ void BK4819_SetupSquelch( // <6:0> 0 TONE2/FSK tuning // 0 ~ 127 // - BK4819_WriteRegister(0x70, 0); + BK4819_write_reg(0x70, 0); // Glitch threshold for Squelch = close // // 0 ~ 255 // - BK4819_WriteRegister(0x4D, 0xA000 | squelch_close_glitch_thresh); + BK4819_write_reg(0x4D, 0xA000 | squelch_close_glitch_thresh); // REG_4E // @@ -603,7 +589,7 @@ void BK4819_SetupSquelch( // <7:0> 8 Glitch threshold for Squelch = open // 0 ~ 255 // - BK4819_WriteRegister(0x4E, // 01 101 11 1 00000000 + BK4819_write_reg(0x4E, // 01 101 11 1 00000000 // #ifndef ENABLE_FASTER_CHANNEL_SCAN // original (*) (1u << 14) | // 1 ??? @@ -628,7 +614,7 @@ void BK4819_SetupSquelch( // <6:0> 46 Ex-noise threshold for Squelch = open // 0 ~ 127 // - BK4819_WriteRegister(0x4F, ((uint16_t)squelch_close_noise_thresh << 8) | squelch_open_noise_thresh); + BK4819_write_reg(0x4F, ((uint16_t)squelch_close_noise_thresh << 8) | squelch_open_noise_thresh); // REG_78 // @@ -636,7 +622,7 @@ void BK4819_SetupSquelch( // // <7:0> 70 RSSI threshold for Squelch = close 0.5dB/step // - BK4819_WriteRegister(0x78, ((uint16_t)squelch_open_rssi_thresh << 8) | squelch_close_rssi_thresh); + BK4819_write_reg(0x78, ((uint16_t)squelch_open_rssi_thresh << 8) | squelch_close_rssi_thresh); BK4819_SetAF(BK4819_AF_MUTE); @@ -645,9 +631,9 @@ void BK4819_SetupSquelch( void BK4819_SetAF(BK4819_af_type_t AF) { - BK4819_WriteRegister(0x47, 0); -// BK4819_WriteRegister(0x47, 0x6040 | (AF << 8)); // 0110 0000 0100 0000 - BK4819_WriteRegister(0x47, (1u << 14) | (1u << 13) | ((AF & 15u) << 8) | (1u << 6)); + BK4819_write_reg(0x47, 0); +// BK4819_write_reg(0x47, 0x6040 | (AF << 8)); // 0110 0000 0100 0000 + BK4819_write_reg(0x47, (1u << 14) | (1u << 13) | ((AF & 15u) << 8) | (1u << 6)); } void BK4819_RX_TurnOn(void) @@ -666,10 +652,10 @@ void BK4819_RX_TurnOn(void) // Enable XTAL // Enable Band Gap // - BK4819_WriteRegister(0x37, 0x1F0F); // 0001 1111 0000 1111 + BK4819_write_reg(0x37, 0x1F0F); // 0001 1111 0000 1111 - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | // BK4819_REG_30_ENABLE_UNKNOWN | BK4819_REG_30_ENABLE_RX_LINK | @@ -683,20 +669,21 @@ void BK4819_RX_TurnOn(void) 0); } -void BK4819_set_rf_filter_path(uint32_t Frequency) +void BK4819_set_rf_filter_path(const uint32_t Frequency) { + if (Frequency == 0 || Frequency == 0xFFFFFFFF) + { // OFF + BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, false); + BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, false); + } + else if (Frequency < rf_filter_transition_freq) { // VHF BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, true); BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, false); } else - if (Frequency == 0xFFFFFFFF) - { // OFF - BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, false); - BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, false); - } - else +// if (Frequency >= rf_filter_transition_freq) { // UHF BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, false); BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, true); @@ -705,10 +692,10 @@ void BK4819_set_rf_filter_path(uint32_t Frequency) void BK4819_set_scrambler(const int index) { - const uint16_t Value = BK4819_ReadRegister(0x31); + const uint16_t Value = BK4819_read_reg(0x31); if (index <= 0) { // disable - BK4819_WriteRegister(0x31, Value & ~(1u << 1)); + BK4819_write_reg(0x31, Value & ~(1u << 1)); } else { // enable @@ -716,14 +703,14 @@ void BK4819_set_scrambler(const int index) if (freq > 12000) freq = 12000; - BK4819_WriteRegister(0x31, Value | (1u << 1)); // enable - BK4819_WriteRegister(0x71, scale_freq(freq)); + BK4819_write_reg(0x31, Value | (1u << 1)); // enable + BK4819_write_reg(0x71, scale_freq(freq)); } } bool BK4819_CompanderEnabled(void) { - return (BK4819_ReadRegister(0x31) & (1u << 3)) ? true : false; + return (BK4819_read_reg(0x31) & (1u << 3)) ? true : false; } void BK4819_SetCompander(const unsigned int mode) @@ -733,11 +720,11 @@ void BK4819_SetCompander(const unsigned int mode) // mode 2 .. RX // mode 3 .. TX and RX - const uint16_t r31 = BK4819_ReadRegister(0x31); + const uint16_t r31 = BK4819_read_reg(0x31); if (mode == 0) { // disable - BK4819_WriteRegister(0x31, r31 & ~(1u << 3)); + BK4819_write_reg(0x31, r31 & ~(1u << 3)); return; } @@ -754,7 +741,7 @@ void BK4819_SetCompander(const unsigned int mode) // <6:0> 64 Compress (AF Tx) noise point (dB) // const uint16_t compress_ratio = (mode == 1 || mode >= 3) ? 2 : 0; // 2:1 - BK4819_WriteRegister(0x29, // (BK4819_ReadRegister(0x29) & ~(3u << 14)) | (compress_ratio << 14)); + BK4819_write_reg(0x29, // (BK4819_read_reg(0x29) & ~(3u << 14)) | (compress_ratio << 14)); (compress_ratio << 14) | (86u << 7) | // compress 0dB (64u << 0)); // compress noise dB @@ -772,30 +759,30 @@ void BK4819_SetCompander(const unsigned int mode) // <6:0> 56 Expander (AF Rx) noise point (dB) // const uint16_t expand_ratio = (mode >= 2) ? 1 : 0; // 1:2 - BK4819_WriteRegister(0x28, // (BK4819_ReadRegister(0x28) & ~(3u << 14)) | (expand_ratio << 14)); + BK4819_write_reg(0x28, // (BK4819_read_reg(0x28) & ~(3u << 14)) | (expand_ratio << 14)); (expand_ratio << 14) | (86u << 7) | // expander 0dB (56u << 0)); // expander noise dB // enable - BK4819_WriteRegister(0x31, r31 | (1u << 3)); + BK4819_write_reg(0x31, r31 | (1u << 3)); } void BK4819_DisableVox(void) { - const uint16_t Value = BK4819_ReadRegister(0x31); - BK4819_WriteRegister(0x31, Value & 0xFFFB); + const uint16_t Value = BK4819_read_reg(0x31); + BK4819_write_reg(0x31, Value & 0xFFFB); } void BK4819_DisableDTMF(void) { - BK4819_WriteRegister(0x24, 0); + BK4819_write_reg(0x24, 0); } void BK4819_EnableDTMF(void) { // no idea what this does - BK4819_WriteRegister(0x21, 0x06D8); // 0000 0110 1101 1000 + BK4819_write_reg(0x21, 0x06D8); // 0000 0110 1101 1000 // REG_24 // @@ -818,7 +805,7 @@ void BK4819_EnableDTMF(void) // const uint16_t threshold = 24; // default, but doesn't decode non-QS radios const uint16_t threshold = 130; // but 128 ~ 247 does // const uint16_t threshold = 8; // 0 ~ 63 ? .. doesn't work with A and B's :( - BK4819_WriteRegister(0x24, // 1 00011000 1 1 1 1110 + BK4819_write_reg(0x24, // 1 00011000 1 1 1 1110 (1u << BK4819_REG_24_SHIFT_UNKNOWN_15) | (threshold << BK4819_REG_24_SHIFT_THRESHOLD) | // 0 ~ 255 (1u << BK4819_REG_24_SHIFT_UNKNOWN_6) | @@ -831,41 +818,49 @@ void BK4819_StartTone1(const uint16_t frequency, const unsigned int level, const { GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); SYSTEM_DelayMs(2); - + // BK4819_SetAF(BK4819_AF_MUTE); BK4819_SetAF(BK4819_AF_BEEP); // BK4819_SetAF(BK4819_AF_TONE); BK4819_EnterTxMute(); - BK4819_WriteRegister(0x70, BK4819_REG_70_ENABLE_TONE1 | ((level & 0x7f) << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); + BK4819_write_reg(0x70, BK4819_REG_70_ENABLE_TONE1 | ((level & 0x7f) << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); - BK4819_WriteRegister(0x30, 0); + BK4819_write_reg(0x30, 0); if (!tx) { - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, +// BK4819_REG_30_ENABLE_VCO_CALIB | +// BK4819_REG_30_ENABLE_UNKNOWN | +// BK4819_REG_30_ENABLE_RX_LINK | BK4819_REG_30_ENABLE_AF_DAC | BK4819_REG_30_ENABLE_DISC_MODE | - BK4819_REG_30_ENABLE_TX_DSP); - } - else - { - BK4819_WriteRegister(0x30, - BK4819_REG_30_ENABLE_VCO_CALIB | - BK4819_REG_30_ENABLE_UNKNOWN | -// BK4819_REG_30_ENABLE_RX_LINK | - BK4819_REG_30_ENABLE_AF_DAC | // - BK4819_REG_30_ENABLE_DISC_MODE | // - BK4819_REG_30_ENABLE_PLL_VCO | - BK4819_REG_30_ENABLE_PA_GAIN | +// BK4819_REG_30_ENABLE_PLL_VCO | +// BK4819_REG_30_ENABLE_PA_GAIN | // BK4819_REG_30_ENABLE_MIC_ADC | - BK4819_REG_30_ENABLE_TX_DSP | // + BK4819_REG_30_ENABLE_TX_DSP | // BK4819_REG_30_ENABLE_RX_DSP | 0); } - - BK4819_WriteRegister(0x71, scale_freq(frequency)); + else + { + BK4819_write_reg(0x30, + BK4819_REG_30_ENABLE_VCO_CALIB | + BK4819_REG_30_ENABLE_UNKNOWN | +// BK4819_REG_30_ENABLE_RX_LINK | + BK4819_REG_30_ENABLE_AF_DAC | + BK4819_REG_30_ENABLE_DISC_MODE | + BK4819_REG_30_ENABLE_PLL_VCO | + BK4819_REG_30_ENABLE_PA_GAIN | +// BK4819_REG_30_ENABLE_MIC_ADC | + BK4819_REG_30_ENABLE_TX_DSP | +// BK4819_REG_30_ENABLE_RX_DSP | + 0); + } + + BK4819_write_reg(0x71, scale_freq(frequency)); BK4819_ExitTxMute(); @@ -883,27 +878,12 @@ void BK4819_StopTones(const bool tx) BK4819_EnterTxMute(); - BK4819_WriteRegister(0x70, 0); + BK4819_write_reg(0x70, 0); - BK4819_WriteRegister(0x30, 0); - if (tx) - { - BK4819_WriteRegister(0x30, - BK4819_REG_30_ENABLE_VCO_CALIB | - BK4819_REG_30_ENABLE_UNKNOWN | -// BK4819_REG_30_ENABLE_RX_LINK | - BK4819_REG_30_ENABLE_AF_DAC | - BK4819_REG_30_ENABLE_DISC_MODE | - BK4819_REG_30_ENABLE_PLL_VCO | - BK4819_REG_30_ENABLE_PA_GAIN | - BK4819_REG_30_ENABLE_MIC_ADC | - BK4819_REG_30_ENABLE_TX_DSP | -// BK4819_REG_30_ENABLE_RX_DSP | - 0); - } - else - { - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + if (!tx) + { + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | // BK4819_REG_30_ENABLE_UNKNOWN | BK4819_REG_30_ENABLE_RX_LINK | @@ -916,23 +896,32 @@ void BK4819_StopTones(const bool tx) BK4819_REG_30_ENABLE_RX_DSP | 0); } + else + { + BK4819_write_reg(0x30, + BK4819_REG_30_ENABLE_VCO_CALIB | + BK4819_REG_30_ENABLE_UNKNOWN | +// BK4819_REG_30_ENABLE_RX_LINK | + BK4819_REG_30_ENABLE_AF_DAC | + BK4819_REG_30_ENABLE_DISC_MODE | + BK4819_REG_30_ENABLE_PLL_VCO | + BK4819_REG_30_ENABLE_PA_GAIN | + BK4819_REG_30_ENABLE_MIC_ADC | + BK4819_REG_30_ENABLE_TX_DSP | +// BK4819_REG_30_ENABLE_RX_DSP | + 0); + } BK4819_ExitTxMute(); - -// if (g_squelch_open || g_monitor_enabled) -// { -// SYSTEM_DelayMs(2); -// GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); -// } } void BK4819_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level) { - const uint16_t prev_af = BK4819_ReadRegister(0x47); + const uint16_t prev_af = BK4819_read_reg(0x47); BK4819_StartTone1(tone_Hz, level, g_current_function == FUNCTION_TRANSMIT); SYSTEM_DelayMs(delay - 2); BK4819_StopTones(g_current_function == FUNCTION_TRANSMIT); - BK4819_WriteRegister(0x47, prev_af); + BK4819_write_reg(0x47, prev_af); } void BK4819_PlayRoger(void) @@ -946,29 +935,29 @@ void BK4819_PlayRoger(void) const uint32_t tone2_Hz = 1310; #endif - const uint16_t prev_af = BK4819_ReadRegister(0x47); + const uint16_t prev_af = BK4819_read_reg(0x47); BK4819_StartTone1(tone1_Hz, 96, true); SYSTEM_DelayMs(80 - 2); BK4819_StartTone1(tone2_Hz, 96, true); SYSTEM_DelayMs(80); BK4819_StopTones(true); - BK4819_WriteRegister(0x47, prev_af); + BK4819_write_reg(0x47, prev_af); } void BK4819_EnterTxMute(void) { - BK4819_WriteRegister(0x50, 0xBB20); + BK4819_write_reg(0x50, 0xBB20); } void BK4819_ExitTxMute(void) { - BK4819_WriteRegister(0x50, 0x3B20); // 0011 1011 0010 0000 + BK4819_write_reg(0x50, 0x3B20); // 0011 1011 0010 0000 } void BK4819_Sleep(void) { - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x37, 0x1D00); // 0 0 0111 0 1 0000 0 0 0 0 + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x37, 0x1D00); // 0 0 0111 0 1 0000 0 0 0 0 } void BK4819_setTxAudio(const unsigned int mode) @@ -978,15 +967,15 @@ void BK4819_setTxAudio(const unsigned int mode) case 0: break; case 1: - BK4819_WriteRegister(0x53,0xE678); // ??? - BK4819_WriteRegister(0x4B,0x7102); // enable TX audio AGC - BK4819_WriteRegister(0x27,0x7430); // ??? -// BK4819_WriteRegister(0x29,0xAB2A); + BK4819_write_reg(0x53,0xE678); // ??? + BK4819_write_reg(0x4B,0x7102); // enable TX audio AGC + BK4819_write_reg(0x27,0x7430); // ??? +// BK4819_write_reg(0x29,0xAB2A); break; case 2: - BK4819_WriteRegister(0x4B,0x7120); // disable TX audio AGC - BK4819_WriteRegister(0x27,0xC430); // ??? -// BK4819_WriteRegister(0x29,0xAB20); + BK4819_write_reg(0x4B,0x7120); // disable TX audio AGC + BK4819_write_reg(0x27,0xC430); // ??? +// BK4819_write_reg(0x29,0xAB20); break; } } @@ -995,25 +984,25 @@ void BK4819_set_mic_gain(unsigned int level) { if (level > 31) level = 31; - - // mic gain 0.5dB/step 0 to 31 - BK4819_WriteRegister(0x7D, 0xE940 | level); -// BK4819_WriteRegister(0x19, 0x1041); // 0001 0000 0100 0001 <15> MIC AGC 1 = disable 0 = enable .. doesn't work -// BK4819_WriteRegister(0x19, BK4819_ReadRegister(0x19) & ~(1u << 15)); // enable mic AGC + // mic gain 0.5dB/step 0 to 31 + BK4819_write_reg(0x7D, 0xE940 | level); + +// BK4819_write_reg(0x19, 0x1041); // 0001 0000 0100 0001 <15> MIC AGC 1 = disable 0 = enable .. doesn't work +// BK4819_write_reg(0x19, BK4819_read_reg(0x19) & ~(1u << 15)); // enable mic AGC // BK4819_setTxAudio(1); } void BK4819_TurnsOffTones_TurnsOnRX(void) { - BK4819_WriteRegister(0x70, 0); + BK4819_write_reg(0x70, 0); BK4819_SetAF(BK4819_AF_MUTE); BK4819_ExitTxMute(); - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | // BK4819_REG_30_ENABLE_UNKNOWN | BK4819_REG_30_ENABLE_RX_LINK | @@ -1029,7 +1018,7 @@ void BK4819_TurnsOffTones_TurnsOnRX(void) void BK4819_Idle(void) { - BK4819_WriteRegister(0x30, 0); + BK4819_write_reg(0x30, 0); } /* void BK4819_ExitBypass(void) @@ -1062,7 +1051,7 @@ void BK4819_ExitBypass(void) // 0 ~ 7 // 0 = bypass DC filter // - BK4819_WriteRegister(0x7E, // 0x302E); // 0 011 000000 101 110 + BK4819_write_reg(0x7E, // 0x302E); // 0 011 000000 101 110 (0u << 15) | // 0 AGC fix mode (3u << 12) | // 3 AGC fix index (5u << 3) | // 5 DC Filter band width for Tx (MIC In) @@ -1076,8 +1065,8 @@ void BK4819_PrepareTransmit(void) BK4819_config_sub_audible(); - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -1106,7 +1095,7 @@ void BK4819_EnterDTMF_TX(bool bLocalLoopback) BK4819_EnterTxMute(); BK4819_SetAF(bLocalLoopback ? BK4819_AF_BEEP : BK4819_AF_MUTE); - BK4819_WriteRegister(0x70, + BK4819_write_reg(0x70, BK4819_REG_70_MASK_ENABLE_TONE1 | (83u << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN) | BK4819_REG_70_MASK_ENABLE_TONE2 | @@ -1119,10 +1108,10 @@ void BK4819_ExitDTMF_TX(bool bKeep) { BK4819_EnterTxMute(); BK4819_SetAF(BK4819_AF_MUTE); - BK4819_WriteRegister(0x70, 0); + BK4819_write_reg(0x70, 0); BK4819_DisableDTMF(); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -1141,7 +1130,7 @@ void BK4819_ExitDTMF_TX(bool bKeep) void BK4819_EnableTXLink(void) { - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -1202,8 +1191,8 @@ void BK4819_PlayDTMF(char Code) if (index < 16) { - BK4819_WriteRegister(0x71, scale_freq(tones[0][index])); - BK4819_WriteRegister(0x72, scale_freq(tones[1][index])); + BK4819_write_reg(0x71, scale_freq(tones[0][index])); + BK4819_write_reg(0x72, scale_freq(tones[1][index])); } } @@ -1254,10 +1243,10 @@ void BK4819_TransmitTone(bool bLocalLoopback, uint32_t Frequency) // // set the tone amplitude // -// BK4819_WriteRegister(0x70, BK4819_REG_70_MASK_ENABLE_TONE1 | (96u << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); - BK4819_WriteRegister(0x70, BK4819_REG_70_MASK_ENABLE_TONE1 | (28u << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); +// BK4819_write_reg(0x70, BK4819_REG_70_MASK_ENABLE_TONE1 | (96u << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); + BK4819_write_reg(0x70, BK4819_REG_70_MASK_ENABLE_TONE1 | (28u << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); - BK4819_WriteRegister(0x71, scale_freq(Frequency)); + BK4819_write_reg(0x71, scale_freq(Frequency)); BK4819_SetAF(bLocalLoopback ? BK4819_AF_BEEP : BK4819_AF_MUTE); @@ -1270,7 +1259,7 @@ void BK4819_TransmitTone(bool bLocalLoopback, uint32_t Frequency) void BK4819_disable_sub_audible(void) { - BK4819_WriteRegister(0x51, 0); + BK4819_write_reg(0x51, 0); } void BK4819_config_sub_audible(void) @@ -1279,7 +1268,7 @@ void BK4819_config_sub_audible(void) // BK4819_gen_tail(2); // 180 deg // #else // BK4819_gen_tail(4); - BK4819_WriteRegister(0x52, (0u << 15) | (0u << 13) | (0u << 12) | (10u << 6) | (15u << 0)); // 0x028F); // 0 00 0 001010 001111 + BK4819_write_reg(0x52, (0u << 15) | (0u << 13) | (0u << 12) | (10u << 6) | (15u << 0)); // 0x028F); // 0 00 0 001010 001111 // #endif } @@ -1308,9 +1297,9 @@ void BK4819_set_tail_detection(const uint32_t freq_10Hz) // freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M // #ifdef ENABLE_CTCSS_TAIL_PHASE_SHIFT - BK4819_WriteRegister(0x07, (0u << 13) | (((freq_10Hz * 206488u) + 50000u) / 100000u)); + BK4819_write_reg(0x07, (0u << 13) | (((freq_10Hz * 206488u) + 50000u) / 100000u)); #else - BK4819_WriteRegister(0x07, (1u << 13) | ((253910 + (freq_10Hz / 2)) / freq_10Hz)); // with rounding + BK4819_write_reg(0x07, (1u << 13) | ((253910 + (freq_10Hz / 2)) / freq_10Hz)); // with rounding #endif } @@ -1371,7 +1360,7 @@ void BK4819_gen_tail(const unsigned int tail) break; } - BK4819_WriteRegister(0x52, + BK4819_write_reg(0x52, (tail_phase_shift << 15) | (ctcss_tail_mode_selection << 13) | (ctcss_detect_threshold_mode << 12) | @@ -1381,7 +1370,7 @@ void BK4819_gen_tail(const unsigned int tail) void BK4819_set_CDCSS_code(const uint32_t control_word) { - BK4819_WriteRegister(0x51, + BK4819_write_reg(0x51, ( 1u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable ( 0u << 14) | // GPIO input for CDCSS 0 = normal (for BK4819v3) ( 0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1414,21 +1403,21 @@ void BK4819_set_CDCSS_code(const uint32_t control_word) // freq(Hz) * 20.64888 for XTAL 13M/26M or // freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M // - BK4819_WriteRegister(0x07, (0u << 13) | 2775u); + BK4819_write_reg(0x07, (0u << 13) | 2775u); // REG_08 <15:0> <15> = 1 for CDCSS high 12bit // <15> = 0 for CDCSS low 12bit // <11:0> = CDCSShigh/low 12bit code // - BK4819_WriteRegister(0x08, (0u << 15) | ((control_word >> 0) & 0x0FFF)); // LS 12-bits - BK4819_WriteRegister(0x08, (1u << 15) | ((control_word >> 12) & 0x0FFF)); // MS 12-bits + BK4819_write_reg(0x08, (0u << 15) | ((control_word >> 0) & 0x0FFF)); // LS 12-bits + BK4819_write_reg(0x08, (1u << 15) | ((control_word >> 12) & 0x0FFF)); // MS 12-bits } void BK4819_set_CTCSS_freq(const uint32_t control_word) { if (control_word == 0) { // NOAA 1050Hz tone stuff - BK4819_WriteRegister(0x51, + BK4819_write_reg(0x51, ( 1u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable ( 0u << 14) | // GPIO input for CDCSS 0 = normal (for BK4819v3) ( 0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1442,7 +1431,7 @@ void BK4819_set_CTCSS_freq(const uint32_t control_word) } else { // normal CTCSS - BK4819_WriteRegister(0x51, + BK4819_write_reg(0x51, ( 1u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable ( 0u << 14) | // GPIO input for CDCSS 0 = normal (for BK4819v3) ( 0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1477,9 +1466,9 @@ void BK4819_set_CTCSS_freq(const uint32_t control_word) // freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M // #ifdef ENABLE_CTCSS_TAIL_PHASE_SHIFT - BK4819_WriteRegister(0x07, (0u << 13) | (((control_word * 206488u) + 50000u) / 100000u)); + BK4819_write_reg(0x07, (0u << 13) | (((control_word * 206488u) + 50000u) / 100000u)); #else - BK4819_WriteRegister(0x07, (1u << 13) | ((253910 + (control_word / 2)) / control_word)); + BK4819_write_reg(0x07, (1u << 13) | ((253910 + (control_word / 2)) / control_word)); #endif } @@ -1487,7 +1476,7 @@ void BK4819_enable_CDCSS_tail(void) { BK4819_gen_tail(0); // CTC134 - BK4819_WriteRegister(0x51, // 0x804A); // 1 0 0 0 0 0 0 0 0 1001010 + BK4819_write_reg(0x51, // 0x804A); // 1 0 0 0 0 0 0 0 0 1001010 ( 1u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable ( 0u << 14) | // GPIO0 input for CDCSS 0 = normal (for BK4819v3) ( 0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1510,7 +1499,7 @@ void BK4819_enable_CTCSS_tail(void) BK4819_gen_tail(4); // 55Hz tone freq #endif - BK4819_WriteRegister(0x51, // 0x804A); // 1 0 0 0 0 0 0 0 0 1001010 + BK4819_write_reg(0x51, // 0x804A); // 1 0 0 0 0 0 0 0 0 1001010 ( 1u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable ( 0u << 14) | // GPIO0 input for CDCSS 0 = normal (for BK4819v3) ( 0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1525,27 +1514,27 @@ void BK4819_enable_CTCSS_tail(void) uint16_t BK4819_GetRSSI(void) { - return BK4819_ReadRegister(0x67) & 0x01FF; + return BK4819_read_reg(0x67) & 0x01FF; } uint8_t BK4819_GetGlitchIndicator(void) { - return BK4819_ReadRegister(0x63) & 0x00FF; + return BK4819_read_reg(0x63) & 0x00FF; } uint8_t BK4819_GetExNoiceIndicator(void) { - return BK4819_ReadRegister(0x65) & 0x007F; + return BK4819_read_reg(0x65) & 0x007F; } uint16_t BK4819_GetVoiceAmplitudeOut(void) { - return BK4819_ReadRegister(0x64); + return BK4819_read_reg(0x64); } uint8_t BK4819_GetAfTxRx(void) { - return BK4819_ReadRegister(0x6F) & 0x003F; + return BK4819_read_reg(0x6F) & 0x003F; } bool BK4819_GetFrequencyScanResult(uint32_t *pFrequency) @@ -1569,8 +1558,8 @@ bool BK4819_GetFrequencyScanResult(uint32_t *pFrequency) // ********** // (REG_0D <10:0> << 16) | (REG_0E <15:0>) .. unit is 10Hz // - const uint16_t high = BK4819_ReadRegister(0x0D); - const uint16_t low = BK4819_ReadRegister(0x0E); + const uint16_t high = BK4819_read_reg(0x0D); + const uint16_t low = BK4819_read_reg(0x0E); const bool finished = ((high >> 15) & 1u) == 0; *pFrequency = ((uint32_t)(high & 0x07FF) << 16) | low; return finished; @@ -1608,17 +1597,17 @@ BK4819_CSS_scan_result_t BK4819_GetCxCSSScanResult(uint32_t *pCdcssFreq, uint16_ // <11:0> CDCSS Low 12 bits // // - const uint16_t High = BK4819_ReadRegister(0x69); + const uint16_t High = BK4819_read_reg(0x69); uint16_t Low; if (((High >> 15) & 1u) == 0) { // CDCSS - Low = BK4819_ReadRegister(0x6A); + Low = BK4819_read_reg(0x6A); *pCdcssFreq = ((uint32_t)(High & 0xFFF) << 12) | (Low & 0xFFF); return BK4819_CSS_RESULT_CDCSS; } - Low = BK4819_ReadRegister(0x68); + Low = BK4819_read_reg(0x68); if (((Low >> 15) & 1u) == 0) { // CTCSS *pCtcssFreq = ((uint32_t)(Low & 0x1FFF) * 4843) / 10000; @@ -1644,7 +1633,7 @@ void BK4819_DisableFrequencyScan(void) // 1 = enable // 0 = disable // - BK4819_WriteRegister(0x32, // 0x0244); // 00 0000100100010 0 + BK4819_write_reg(0x32, // 0x0244); // 00 0000100100010 0 ( 0u << 14) | // 0 frequency scan Time (290u << 1) | // ??? ( 0u << 0)); // 0 frequency scan enable @@ -1666,7 +1655,7 @@ void BK4819_EnableFrequencyScan(void) // 1 = enable // 0 = disable // - BK4819_WriteRegister(0x32, // 0x0245); // 00 0000100100010 1 + BK4819_write_reg(0x32, // 0x0245); // 00 0000100100010 1 ( 0u << 14) | // 0 frequency scan time (290u << 1) | // ??? ( 1u << 0)); // 1 frequency scan enable @@ -1676,7 +1665,7 @@ void BK4819_set_scan_frequency(uint32_t Frequency) { BK4819_set_rf_frequency(Frequency, false); - BK4819_WriteRegister(0x51, + BK4819_write_reg(0x51, (0u << 15) | // TX CTCSS/CDCSS 1 = enable 0 = disable (0u << 14) | // GPIO input for CDCSS 0 = normal (for BK4819v3) (0u << 13) | // TX CDCSS code 1 = negative 0 = positive @@ -1694,27 +1683,27 @@ void BK4819_set_scan_frequency(uint32_t Frequency) void BK4819_StopScan(void) { BK4819_DisableFrequencyScan(); - BK4819_WriteRegister(0x30, 0); + BK4819_write_reg(0x30, 0); } uint8_t BK4819_GetDTMF_5TONE_Code(void) { - return (BK4819_ReadRegister(0x0B) >> 8) & 0x0F; + return (BK4819_read_reg(0x0B) >> 8) & 0x0F; } uint8_t BK4819_get_CDCSS_code_type(void) { - return (BK4819_ReadRegister(0x0C) >> 14) & 3u; + return (BK4819_read_reg(0x0C) >> 14) & 3u; } uint8_t BK4819_GetCTCShift(void) { - return (BK4819_ReadRegister(0x0C) >> 12) & 3u; + return (BK4819_read_reg(0x0C) >> 12) & 3u; } uint8_t BK4819_GetCTCType(void) { - return (BK4819_ReadRegister(0x0C) >> 10) & 3u; + return (BK4819_read_reg(0x0C) >> 10) & 3u; } void BK4819_reset_fsk(void) @@ -1732,12 +1721,12 @@ void BK4819_reset_fsk(void) (1u << 3) | // 0 or 1 sync length selection (0u << 0); // 0 ~ 7 ??? - BK4819_WriteRegister(0x3F, 0); // disable interrupts + BK4819_write_reg(0x3F, 0); // disable interrupts - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's - BK4819_WriteRegister(0x59, fsk_reg59); + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's + BK4819_write_reg(0x59, fsk_reg59); - BK4819_WriteRegister(0x30, 0); + BK4819_write_reg(0x30, 0); } #ifdef ENABLE_AIRCOPY @@ -1763,7 +1752,7 @@ void BK4819_reset_fsk(void) // // enable tone-2, set gain // - BK4819_WriteRegister(0x70, // 0 0000000 1 1100000 + BK4819_write_reg(0x70, // 0 0000000 1 1100000 ( 0u << 15) | ( 0u << 8) | ( 1u << 7) | @@ -1778,11 +1767,11 @@ void BK4819_reset_fsk(void) // // tone-2 = 1200Hz // - BK4819_WriteRegister(0x72, scale_freq(1200)); + BK4819_write_reg(0x72, scale_freq(1200)); // aircopy is done in direct FM mode // - BK4819_WriteRegister(0x58, // 0x00C1); // 000 000 00 11 00 000 1 + BK4819_write_reg(0x58, // 0x00C1); // 000 000 00 11 00 000 1 (0u << 13) | // 1 FSK TX mode selection // 0 = FSK 1.2K and FSK 2.4K TX .. no tones, direct FM // 1 = FFSK 1200 / 1800 TX @@ -1841,7 +1830,7 @@ void BK4819_reset_fsk(void) // // Enable CRC among other things we don't know yet // - BK4819_WriteRegister(0x5C, 0x5665); // 010101100 1 100101 + BK4819_write_reg(0x5C, 0x5665); // 010101100 1 100101 // REG_5D // @@ -1852,7 +1841,7 @@ void BK4819_reset_fsk(void) // // <4:0> 0 ??? // - BK4819_WriteRegister(0x5D, ((packet_size - 1) << 8)); + BK4819_write_reg(0x5D, ((packet_size - 1) << 8)); } void BK4819_start_aircopy_fsk_rx(const unsigned int packet_size) @@ -1861,18 +1850,18 @@ void BK4819_reset_fsk(void) BK4819_reset_fsk(); - BK4819_WriteRegister(0x02, 0); // clear interrupt flags + BK4819_write_reg(0x02, 0); // clear interrupt flags // set the almost full threshold - BK4819_WriteRegister(0x5E, (64u << 3) | (1u << 0)); // 0 ~ 127, 0 ~ 7 + BK4819_write_reg(0x5E, (64u << 3) | (1u << 0)); // 0 ~ 127, 0 ~ 7 // set the packet size - BK4819_WriteRegister(0x5D, ((packet_size - 1) << 8)); + BK4819_write_reg(0x5D, ((packet_size - 1) << 8)); BK4819_RX_TurnOn(); - // BK4819_WriteRegister(0x3F, BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); - BK4819_WriteRegister(0x3F, BK4819_REG_3F_FSK_RX_SYNC | BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); + // BK4819_write_reg(0x3F, BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); + BK4819_write_reg(0x3F, BK4819_REG_3F_FSK_RX_SYNC | BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); // REG_59 // @@ -1924,8 +1913,8 @@ void BK4819_reset_fsk(void) (1u << 3) | // 0 or 1 sync length selection (0u << 0); // 0 ~ 7 ??? - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's - BK4819_WriteRegister(0x59, (1u << 13) | (1u << 12) | fsk_reg59); // enable scrambler, enable RX + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's + BK4819_write_reg(0x59, (1u << 13) | (1u << 12) | fsk_reg59); // enable scrambler, enable RX } #endif @@ -2036,15 +2025,15 @@ void BK4819_reset_fsk(void) (1u << 3) | // 0/1 sync length selection (0u << 0); // 0 ~ 7 ??? - BK4819_WriteRegister(0x70, + BK4819_write_reg(0x70, ( 0u << 15) | // 0 ( 0u << 8) | // 0 ( 1u << 7) | // 1 (96u << 0)); // 96 - BK4819_WriteRegister(0x72, scale_freq(1200)); + BK4819_write_reg(0x72, scale_freq(1200)); - BK4819_WriteRegister(0x58, + BK4819_write_reg(0x58, (1u << 13) | // 1 FSK TX mode selection // 0 = FSK 1.2K and FSK 2.4K TX .. no tones, direct FM // 1 = FFSK 1200 / 1800 TX @@ -2095,47 +2084,47 @@ void BK4819_reset_fsk(void) // // <15:8> sync byte 0 // < 7:0> sync byte 1 -// BK4819_WriteRegister(0x5A, ((uint16_t)mdc1200_sync_suc_xor[0] << 8) | (mdc1200_sync_suc_xor[1] << 0)); - BK4819_WriteRegister(0x5A, ((uint16_t)mdc1200_sync_suc_xor[1] << 8) | (mdc1200_sync_suc_xor[2] << 0)); +// BK4819_write_reg(0x5A, ((uint16_t)mdc1200_sync_suc_xor[0] << 8) | (mdc1200_sync_suc_xor[1] << 0)); + BK4819_write_reg(0x5A, ((uint16_t)mdc1200_sync_suc_xor[1] << 8) | (mdc1200_sync_suc_xor[2] << 0)); // REG_5B .. bytes 2 & 3 sync pattern // // <15:8> sync byte 2 // < 7:0> sync byte 3 -// BK4819_WriteRegister(0x5B, ((uint16_t)mdc1200_sync_suc_xor[2] << 8) | (mdc1200_sync_suc_xor[3] << 0)); - BK4819_WriteRegister(0x5B, ((uint16_t)mdc1200_sync_suc_xor[3] << 8) | (mdc1200_sync_suc_xor[4] << 0)); +// BK4819_write_reg(0x5B, ((uint16_t)mdc1200_sync_suc_xor[2] << 8) | (mdc1200_sync_suc_xor[3] << 0)); + BK4819_write_reg(0x5B, ((uint16_t)mdc1200_sync_suc_xor[3] << 8) | (mdc1200_sync_suc_xor[4] << 0)); // disable CRC - BK4819_WriteRegister(0x5C, 0x5625); // 01010110 0 0 100101 -// BK4819_WriteRegister(0x5C, 0xAA30); // 10101010 0 0 110000 + BK4819_write_reg(0x5C, 0x5625); // 01010110 0 0 100101 +// BK4819_write_reg(0x5C, 0xAA30); // 10101010 0 0 110000 // set the almost full threshold - BK4819_WriteRegister(0x5E, (64u << 3) | (1u << 0)); // 0 ~ 127, 0 ~ 7 + BK4819_write_reg(0x5E, (64u << 3) | (1u << 0)); // 0 ~ 127, 0 ~ 7 { // packet size .. sync + 14 bytes - size of a single mdc1200 packet // uint16_t size = 1 + (MDC1200_FEC_K * 2); uint16_t size = 0 + (MDC1200_FEC_K * 2); -// size -= (fsk_reg59 & (1u << 3)) ? 4 : 2; +// size -= (fsk_reg59 & (1u << 3)) ? 4 : 2; size = ((size + 1) / 2) * 2; // round up to even, else FSK RX doesn't work - BK4819_WriteRegister(0x5D, ((size - 1) << 8)); + BK4819_write_reg(0x5D, ((size - 1) << 8)); } - + // clear FIFO's then enable RX - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); - BK4819_WriteRegister(0x59, (1u << 12) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 12) | fsk_reg59); // clear interrupt flags - BK4819_WriteRegister(0x02, 0); + BK4819_write_reg(0x02, 0); // BK4819_RX_TurnOn(); // enable interrupts -// BK4819_WriteRegister(0x3F, BK4819_ReadRegister(0x3F) | BK4819_REG_3F_FSK_RX_SYNC | BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); +// BK4819_write_reg(0x3F, BK4819_read_reg(0x3F) | BK4819_REG_3F_FSK_RX_SYNC | BK4819_REG_3F_FSK_RX_FINISHED | BK4819_REG_3F_FSK_FIFO_ALMOST_FULL); } else { - BK4819_WriteRegister(0x70, 0); - BK4819_WriteRegister(0x58, 0); + BK4819_write_reg(0x70, 0); + BK4819_write_reg(0x58, 0); } } @@ -2148,9 +2137,9 @@ void BK4819_reset_fsk(void) const unsigned int size = MDC1200_encode_single_packet(packet, op, arg, id); //BK4819_ExitTxMute(); - BK4819_WriteRegister(0x50, 0x3B20); // 0011 1011 0010 0000 + BK4819_write_reg(0x50, 0x3B20); // 0011 1011 0010 0000 - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -2178,11 +2167,11 @@ void BK4819_reset_fsk(void) // <15> TxCTCSS/CDCSS 0 = disable 1 = Enable // // turn off CTCSS/CDCSS during FFSK - const uint16_t css_val = BK4819_ReadRegister(0x51); - BK4819_WriteRegister(0x51, 0); + const uint16_t css_val = BK4819_read_reg(0x51); + BK4819_write_reg(0x51, 0); // set the FM deviation level - const uint16_t dev_val = BK4819_ReadRegister(0x40); + const uint16_t dev_val = BK4819_read_reg(0x40); #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) // UART_printf("tx dev %04X\r\n", dev_val); #endif @@ -2194,10 +2183,10 @@ void BK4819_reset_fsk(void) case BK4819_FILTER_BW_NARROW: deviation = 850; break; case BK4819_FILTER_BW_NARROWER: deviation = 750; break; } - //BK4819_WriteRegister(0x40, (3u << 12) | (deviation & 0xfff)); - BK4819_WriteRegister(0x40, (dev_val & 0xf000) | (deviation & 0xfff)); + //BK4819_write_reg(0x40, (3u << 12) | (deviation & 0xfff)); + BK4819_write_reg(0x40, (dev_val & 0xf000) | (deviation & 0xfff)); } - + // REG_2B 0 // // <15> 1 Enable CTCSS/CDCSS DC cancellation after FM Demodulation 1 = enable 0 = disable @@ -2211,15 +2200,15 @@ void BK4819_reset_fsk(void) // // disable the 300Hz HPF and FM pre-emphasis filter // - const uint16_t filt_val = BK4819_ReadRegister(0x2B); - BK4819_WriteRegister(0x2B, (1u << 2) | (1u << 0)); + const uint16_t filt_val = BK4819_read_reg(0x2B); + BK4819_write_reg(0x2B, (1u << 2) | (1u << 0)); // ******************************************* // setup the FFSK modem as best we can for MDC1200 - + // MDC1200 uses 1200/1800 Hz FSK tone frequencies 1200 bits/s // - BK4819_WriteRegister(0x58, // 0x37C3); // 001 101 11 11 00 001 1 + BK4819_write_reg(0x58, // 0x37C3); // 001 101 11 11 00 001 1 (1u << 13) | // 1 FSK TX mode selection // 0 = FSK 1.2K and FSK 2.4K TX .. no tones, direct FM // 1 = FFSK 1200/1800 TX @@ -2274,7 +2263,7 @@ void BK4819_reset_fsk(void) // // tone-2 = 1200Hz // - BK4819_WriteRegister(0x72, scale_freq(1200)); + BK4819_write_reg(0x72, scale_freq(1200)); // REG_70 // @@ -2293,7 +2282,7 @@ void BK4819_reset_fsk(void) // // enable tone-2, set gain // - BK4819_WriteRegister(0x70, // 0 0000000 1 1100000 + BK4819_write_reg(0x70, // 0 0000000 1 1100000 ( 0u << 15) | // 0 ( 0u << 8) | // 0 ( 1u << 7) | // 1 @@ -2336,21 +2325,21 @@ void BK4819_reset_fsk(void) (0u << 0); // 0 ~ 7 ??? // Set packet length (not including pre-amble and sync bytes that we can't seem to disable) - BK4819_WriteRegister(0x5D, ((size - 1) << 8)); + BK4819_write_reg(0x5D, ((size - 1) << 8)); // REG_5A // // <15:8> 0x55 FSK Sync Byte 0 (Sync Byte 0 first, then 1,2,3) // <7:0> 0x55 FSK Sync Byte 1 // - BK4819_WriteRegister(0x5A, 0x0000); // bytes 1 & 2 + BK4819_write_reg(0x5A, 0x0000); // bytes 1 & 2 // REG_5B // // <15:8> 0x55 FSK Sync Byte 2 (Sync Byte 0 first, then 1,2,3) // <7:0> 0xAA FSK Sync Byte 3 // - BK4819_WriteRegister(0x5B, 0x0000); // bytes 2 & 3 + BK4819_write_reg(0x5B, 0x0000); // bytes 2 & 3 // CRC setting (plus other stuff we don't know what) // @@ -2366,25 +2355,25 @@ void BK4819_reset_fsk(void) // // NB, this also affects TX pre-amble in some way // - BK4819_WriteRegister(0x5C, 0x5625); // 010101100 0 100101 -// BK4819_WriteRegister(0x5C, 0xAA30); // 101010100 0 110000 -// BK4819_WriteRegister(0x5C, 0x0030); // 000000000 0 110000 + BK4819_write_reg(0x5C, 0x5625); // 010101100 0 100101 +// BK4819_write_reg(0x5C, 0xAA30); // 101010100 0 110000 +// BK4819_write_reg(0x5C, 0x0030); // 000000000 0 110000 - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's - BK4819_WriteRegister(0x59, fsk_reg59); // release the FIFO reset + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); // clear FIFO's + BK4819_write_reg(0x59, fsk_reg59); // release the FIFO reset { // load the entire packet data into the TX FIFO buffer unsigned int i; const uint16_t *p = (const uint16_t *)packet; for (i = 0; i < (size / sizeof(p[0])); i++) - BK4819_WriteRegister(0x5F, p[i]); // load 16-bits at a time + BK4819_write_reg(0x5F, p[i]); // load 16-bits at a time } // enable tx interrupt - BK4819_WriteRegister(0x3F, BK4819_REG_3F_FSK_TX_FINISHED); + BK4819_write_reg(0x3F, BK4819_REG_3F_FSK_TX_FINISHED); // enable FSK TX - BK4819_WriteRegister(0x59, (1u << 11) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 11) | fsk_reg59); { // packet time is .. // 173ms for PTT ID, acks, emergency @@ -2397,10 +2386,10 @@ void BK4819_reset_fsk(void) while (timeout-- > 0) { SYSTEM_DelayMs(4); - if (BK4819_ReadRegister(0x0C) & (1u << 0)) + if (BK4819_read_reg(0x0C) & (1u << 0)) { // we have interrupt flags - BK4819_WriteRegister(0x02, 0); - if (BK4819_ReadRegister(0x02) & BK4819_REG_02_FSK_TX_FINISHED) + BK4819_write_reg(0x02, 0); + if (BK4819_read_reg(0x02) & BK4819_REG_02_FSK_TX_FINISHED) timeout = 0; // TX is complete } } @@ -2409,28 +2398,28 @@ void BK4819_reset_fsk(void) GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); // disable FSK - BK4819_WriteRegister(0x59, fsk_reg59); + BK4819_write_reg(0x59, fsk_reg59); - BK4819_WriteRegister(0x3F, 0); // disable interrupts - BK4819_WriteRegister(0x70, 0); - BK4819_WriteRegister(0x58, 0); + BK4819_write_reg(0x3F, 0); // disable interrupts + BK4819_write_reg(0x70, 0); + BK4819_write_reg(0x58, 0); // restore FM deviation level - BK4819_WriteRegister(0x40, dev_val); + BK4819_write_reg(0x40, dev_val); // restore TX/RX filtering - BK4819_WriteRegister(0x2B, filt_val); + BK4819_write_reg(0x2B, filt_val); // restore the CTCSS/CDCSS setting - BK4819_WriteRegister(0x51, css_val); + BK4819_write_reg(0x51, css_val); //BK4819_EnterTxMute(); - BK4819_WriteRegister(0x50, 0xBB20); // 1011 1011 0010 0000 + BK4819_write_reg(0x50, 0xBB20); // 1011 1011 0010 0000 //BK4819_SetAF(BK4819_AF_MUTE); - BK4819_WriteRegister(0x47, (1u << 14) | (1u << 13) | (BK4819_AF_MUTE << 8) | (1u << 6)); + BK4819_write_reg(0x47, (1u << 14) | (1u << 13) | (BK4819_AF_MUTE << 8) | (1u << 6)); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -2444,14 +2433,14 @@ void BK4819_reset_fsk(void) 0); //BK4819_ExitTxMute(); - BK4819_WriteRegister(0x50, 0x3B20); // 0011 1011 0010 0000 + BK4819_write_reg(0x50, 0x3B20); // 0011 1011 0010 0000 } #endif void BK4819_Enable_AfDac_DiscMode_TxDsp(void) { - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x30, // BK4819_REG_30_ENABLE_VCO_CALIB | // BK4819_REG_30_ENABLE_UNKNOWN | // BK4819_REG_30_ENABLE_RX_LINK | @@ -2467,12 +2456,12 @@ void BK4819_Enable_AfDac_DiscMode_TxDsp(void) void BK4819_GetVoxAmp(uint16_t *pResult) { - *pResult = BK4819_ReadRegister(0x64) & 0x7FFF; + *pResult = BK4819_read_reg(0x64) & 0x7FFF; } void BK4819_SetScrambleFrequencyControlWord(uint32_t Frequency) { - BK4819_WriteRegister(0x71, scale_freq(Frequency)); + BK4819_write_reg(0x71, scale_freq(Frequency)); } void BK4819_PlayDTMFEx(bool bLocalLoopback, char Code) @@ -2480,7 +2469,7 @@ void BK4819_PlayDTMFEx(bool bLocalLoopback, char Code) BK4819_EnableDTMF(); BK4819_EnterTxMute(); BK4819_SetAF(bLocalLoopback ? BK4819_AF_BEEP : BK4819_AF_MUTE); - BK4819_WriteRegister(0x70, 0xD3D3); // 1101 0011 1101 0011 + BK4819_write_reg(0x70, 0xD3D3); // 1101 0011 1101 0011 BK4819_EnableTXLink(); SYSTEM_DelayMs(50); BK4819_PlayDTMF(Code); diff --git a/driver/bk4819.h b/driver/bk4819.h index 8bbcd53..b09aa37 100644 --- a/driver/bk4819.h +++ b/driver/bk4819.h @@ -62,10 +62,10 @@ typedef enum BK4819_CSS_scan_result_e BK4819_CSS_scan_result_t; extern bool g_rx_idle_mode; void BK4819_Init(void); -uint16_t BK4819_ReadRegister(const uint8_t Register); -void BK4819_WriteRegister(const uint8_t Register, uint16_t Data); -void BK4819_WriteU8(uint8_t Data); -void BK4819_WriteU16(uint16_t Data); +uint16_t BK4819_read_reg(const uint8_t Register); +void BK4819_write_reg(const uint8_t Register, uint16_t Data); +void BK4819_write_8(uint8_t Data); +void BK4819_write_16(uint16_t Data); void BK4819_EnableAFC(void); void BK4819_DisableAFC(void); @@ -96,7 +96,7 @@ void BK4819_SetupSquelch( void BK4819_SetAF(BK4819_af_type_t AF); void BK4819_RX_TurnOn(void); -void BK4819_set_rf_filter_path(uint32_t Frequency); +void BK4819_set_rf_filter_path(const uint32_t Frequency); void BK4819_set_scrambler(const int index); diff --git a/firmware.bin b/firmware.bin index 8d485c3223dbc709ae82c1e7a3748d252a6ab002..de2a74af73eccb8ee34a57c369e27d63c51cfb8d 100644 GIT binary patch delta 44046 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 z
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 diff --git a/firmware.packed.bin b/firmware.packed.bin index ec1034f910051d2e14fe6c38c6ce30904ac2a355..f04b959e8696d424a68346122809e641aa9171a6 100644 GIT binary patch delta 57573 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åOm*Cv0I|us42Z}f9e zW1#thQk+{J8*=@gZZ+W@{uhRZ5;o%zk#xQ}`cdIn05b5To;S9SX_=Y?&}wotQlhgnPxip%>!l{?o+wYVhuq3QdO zBlwoUq^UK;A^X$nwDaTE?jW3L8V;?JStN=ds1{*e@zwt*)`rr%y%tJwA~P@2Vt!gZA5DGB~5`B<^_%3>5-1mx4$w zv=#)B);K?t=xIKBtAkdUV8@brFpVV*)^F!IbpIkXQkG8jZA)J*2g1P{$s;iKQbO5& zaQq{&Ei`>4a690z^JF)5N!*qhGcEC}`z0}`+xA8r6X5yCos^cNbevpo;x)ZO%abAL z*ezr1gAVDrIvx0|n;M0~hn#(N?F*vA`tm2SMk=BfNwry4TFc#^T4M0Fw>j3D4jt*# zz;axv;-)>RzNhwXjfT=Rl~h>>yd_CeVLg||z zx{={hYsJN!Ao?(yx5~x;#L#^hurjb=pFf6=F^!%Y$;azVYVE!4UjNRH=wui!c^S>5 z5+-Apc+?T?u=#r+s!4N{b%XJ=PtDdD)a{=F5b9erGN0y^6+jlq8~F_X%Yo3?%v4df znKD!k&_l0X)H=GoJ-@m}gTlY;CANq@*~N2{m#srLQ@!-zNlp%4&EO>(O>R>cs}yq3 zE;gY?`ecmsI$o)*2|eXt5T3$WQ0d+>!HmXeb#bFE9y1S3erdg+k_q8L;#$KSfmHi9 zVBPLyPQcwNp1rqYr!c=KFMozH90(yS{2-sw{qlJ^^Ae z#>8spzV@SI-nQ4XE8KwZRB~QPfbj{fIX<;Tq~MT_MF>u6)7K_VV*gl=jmFe@hx0D( zqQ1{r-SM~``LnM!e6i@UJ`*jLYn_KMi6$P|N64RVg0QC9S`w}3a8I#cu!n`ax#bUx zZ{7H|7)9&SxbP^(ZBl9P=hAGjF6mh&#~KPZu2kMfEiIb4$jB8}`7JOy0X^qN#avw8 z52#d(w+nWG8jlB@PVp0{~kr-KUAKfr#!6(XY(7|UOl^74j9#VdR89g z&63ZOle6cLV(t(hM==>ZZ@1Ltw<;Z@W`Ef8??4BeES{N-9th!FcXEd$X(PE`lJtmp z`dT#R#5hr!YZ6jRt zu2jNeO1n|x$ER|diX$f>b!ZQGx7fbiK%t-CxE1 zA1Z|80v$1hY;KiqT{w9iE5PQt{xtG#3FoUj>Q?ZnS zYx?)Vji%=}Fdehc>)9I~xiu}O&1ME9{wuuz{U@nMNI=4b0qc)bGp}c1hZl?pJ;Dds z_8|qIGz#h(kxQ@dnph?)u})5OkkUiRwt9Cw@|DXBM;U*-5|iJ^jT?xOyy6~ZyX({z zaURyDfa*8aUE1^b(PEkA;k9&)v{+nEGhUEHxg@?DMxAo7SknB)JIxAcu^F9|DN;|A{#}9(L zTyk?h+jpZ`T)*|JiQ;LRBBjrJ{$sX_)TFZqg8i#BE1e>FWVW$~`fg3nqOj(NEWgt$ z9Ka?*z@wN4D~)K#yE6m9)#5xKS|%%C^pUfR$w)i3ke}zWDBX?8x^T6PrOnNW;a@@S zEH{XU{xOVN;O}$3?|>Cf4+^8ES=86? zz2O3waaWtoU@0t$P0+9Ph5ZXR7CX6+BJ!D zy7+TKg{lc$C{F2oA3X7t@&=Gn<0{G#h5zq&bfFLo0`)r{ZszbU2bHZFpIFI#Z1r-b zY95WtK;!d4?RpE=YiyOT1tab~%{?p6PI)y>4kp8E5UQTFcF zTw@pJy8Qg%n$P@3h-j{u?lxkP!bmLQt9_%0BgLPKji;}3)PXCG{*)g29Jw5)yOnZ@ z=CM0tS|6R<>{Ug}SV7_8Vci=r`R*Ghv5f5PhrRmeJ`}`~_jc#K<-r6L!ZBp)) zPB9y*oY*y?14Re8{Oo^QGn8wRx;%X!H+OAgYmyqqYBrA2?CO?du&fZ$1((N|2%r8w zkC=JHt?w>Zq!<0%;bEARM`1YdOkDXYYnR(Os&~v={!et$r8ZMuf?706p|;%`x|=Eo z;3HD;702*~=f7zB-^+?A;n+ZJ0}i72I>bDHf|WJZuBQui>rml92Mrn? zqLXxJX zO#m2e)){Nw6~*trz(SvoNqWIuvSLt!*AFjaprn)5x*Yy(^*Xj?QPIXWfU#-engckE zbv)*%;q?rA$|QL@5SV9EBi?5fPb25LUr3R1a=I)i9o_OmtwO0xOA6CyCk{XH#1pHGwNBpg_BV*?Vi$lE>`cOI#Gz6H#+f3r1HsW_jcb=ojv1l=8BseG}=seE>Onlb}NFhv=x$4kG>}%mAcK3Pib&%2D3Q%l*y8w*r$05#J z+k+{e=?eP7%{B`eAC;I(Lg{>sbN2p{K0Qo|;9}y#w?WBfKYjiBFXv;27Kq3lEveHj z|F%3%qmAfMiQX!+n>&evMB!YSN<9R1&Bt9z@Y0n^a#rk*ME)oWL#on;voC@RRRx@m z2;Xfi1xe<9;le13B_`=p_h`jHkDAh$8bOz?eNm-32+j zshhC3e|KXVX9$N}#Y=>SlpM?T$3%5N^aAq?e{J-Be3RRWt_qQ-*hJkRjEiYCYlywL zu`k*+&NP&j_^9d1MT1pD=L!Q)7Gv3+oV{`7RxeA8K#|M057%*@bdB9bp3LaIJSEIW zO)?J%%3v-o3Jt~UF{56=m9zO`>u-oZn(<8eI!g2LP7Do*L1{i{d6U&@BnfVKQ3%Qe zg`kqiob&@N}&zh>Mxmn?5qX z)r*hnPeIYFm*(DUvfJ?WKfLsT&b`u@tf(c^Nvnoo*E^#y-p2h6AQo%Vm=FbEZupAC zOP_o|)6Eg~#11FOdR(JK^|Tyzn0VraU6ytP3bO`Q>6bEY_)h7t#3hBkC~SA@=MD~h z^4YHf_Z3pp3drYdO3<8KtO*E5qie?>Hb>i_?g7%?xPznx@Ty>g$KSnT8NYxGM1QrS z>cE5as$W;RzSP3}CV3NLT%a%$<%7bIf8!3nAtNuKqq42~QTlw4>O8-6 za<2CD9(|%3By|Bdf{sDzu&jwV>L>t6N-yblNXR1!#eoh(2U7;XiTc{$4?MkQ zXgpr-1+x+~HJeHAn8sx_tL6(Clm=QGQZ_9>ZZSeL2Pnk@ZXCeXyAoO+d=XCyWtt}= z^{%(1$Y{QP>+=D17nD+NqB~DL$zC}YhNNew93x3ib@EtL|LyhSNVknaiV*0KJk&=x^QE*IGQ;){P^$0U8MrEY1yd8{79&CS~ai@9Mox*xu84{Cz- zaj4jC0*;RsDK%D#H+9)uT+)qmfa^ooPCnSo2ZTV3ce<^AoA1PlN3qHey<9Y%cA=L} zNAlz3h*u0eLRiR+zR#@;S^#l}EJd!${0{fK(T76R0JRvfM|mK`K-lx^<+7u;Hnp7Z z_{QHaTwUsxjU^s2mt`jYVViwHkQ&=M?8!Op!JNq`#mQGB_}}9Q;U$O!#$CliM04tJY^ zxP&mj!4xODVe+)WiDC=ile~W1`1Rs2sI#2tY<9reJPy{QhPYQ{@sj+-D_;$sd^tt( zos&*mM=8e3*x)^4SYh^YQNrwT%gw2BuHZJi(aoue5<_tL2T^hOL5?x1JA2EIbq3-V zWl%?|5BmiJT_xZ@$wkr{NfODpL_wn1I<(%!W?K}+XqXnb(B;u);Zo@sxjsu`p!qlT zziqe4YO4tgiqY7v&;+?ikj+Heobr0r1hl=}lOT}AM-b_%4|iii#|Grt^KD17Cmux-A| zpOYB-gj+I~4*L_K*sZPmHuJ^F^0Iqrb4V5;PY46J`hY>?5GRmVh|gyzPR2l-WZ_H~ zkzoN^MEqsG89BvreRwMGmVy{cIi-y-rfMvr9T5$k9v#hAbC+m3mqqO~L%MjM=9x&{&vni~H+6t;c%ABB>12AbXZAPg}Ss}(bk>IJApV^Ef+1RV80 z4*V!q>tV$*n8B&XIrG+kU~Y~5g~tyPo^Q`yZ@h?=j{aDHA?tiOD~OOS*EI2D_Oxn_A#2BsI9*Addl#1rQL`V<6s zGckG+Zp#<1S@=`S{NUF;A1_2}|3irDf1luY5S;GO-~KVk}yeWDq~gLQoK%FzSy z^>|HkKkfKEunE_kuZktp-AT#$a88D$8WtgJY5!q!R-D!C8REkFIOsJ?E&hxsT!oWa zpcS+8oSywxu6t+L9+aOMWo~!X|9et!bWOu~EZVqi^iH>N(6{g;#oi7&7r|MkR%w*S zu2FPB=PS|n&-dv&=NMq;R6g_pix5Sn5A_R4p0W;5ljpV{HO(tClyTZ2-c`t+f-Yhm z$W6cD+?D1}6lt#_2Q|4_mKMr;%}JwsP>cBl!)2KWDjx8roz4fotbh8X9gM8T=R5sM zxtiqof%8W4r4U%|{yj!nlk|7VIHq!(xWF*JwYb(K=3qd|zC*RcS)>lsVJa?t zmCMRVq-;_UczKVD!2q6wXw~HjT_m)g*9Dad`(cd4B+bm)mn5tEf1wpGUBCxYt&M`| zQUF4XS_@fX^bNZQBwPO>`E=TtK`jO&Knx76;CP_P8wdA-;!RDu^tdlnKpEXyaVf$i z(IT1b@Oq?pmTDZquias>dR*fTYvK-Ix6S@nY-xg~M4f4;B@(+YSE)2QVZ~NS6!on9 zZT$01%3>Na83m2RRfQ6(+C;I!JLUZ6)jQu*Mxmi3a zk1i#34;8$Q^Xsu0vT>xprgaKJPP#)0mymbAuY8X8=rdpcnY@6}=xMjBK`+F&KpX;_LSDt!+bIN?H(3NepP386gy0x6x9%#kwO?^Lgr=wMAG z@qC{30Sye8asrI0mXXI0YBbrNCaMnck$iM7bP?@97$@T9taxkCshlRYc5H;2Z<>Qa z9;yhbU&VI0{hDY#2Rfx+rs9_xc$tdN%U;iWfhS=eI2G@MyWt%;70bTsa=QSh;(BY- zm1-(E{{hwcXbvo@^`Br3(15riux}UdKw^V&KM9V--4=@fDWT2rup9plzyFS&^u?c< zqT{PcwyyO2%TWwY#rC^0?-LG4I8KqEl(cgOH~B*LK)@H0y^Jh2HeWwo%Uz}|Gl7bk zTcOi$Z)h-*N@aUSAf24q^grb6(2$4a@>gu@n_g!r{Z^Z~C`7*R84fUtI`ya^-v?1}tpfLANf+NGSE7>nt(a3E}Hg}CKNulKd?jH+zX zSlR`*eK-f)$A=Q24eASG1p$h@^-ENqTia0yVjhOI zLPvk3-=c;5CBBU#o5t~YQ|cIHWe43Vt9)rn=j2skK$#}_reuoRg&PVBm+ltsw6-j2 zGbp=h`z!s&>LRS@_iD&|Ra1aI@Nzu%*gFwj|> z^O}GF#ea*5x#|5|P>#O{9z-wa04RI{OnSg7de1F`9;BXsK~86e(m4QMO_#1E zDin!H6h+HdyJNPwGZryv+Oni){cj$t%G>V;A_>+-uAqWWRhNGKul?&TW+Omb zx-iIP#bLnS|A+7Vc~1440!sjeq(r z19q$BE)n7_It^8m_izMf6U&_fRpT-KX(up&yP@}{l3~}&T>$D~-7yJuc1ydDu zRY+CpG&YCc=SSg|DTSO+$YVEP`?D5PI-n5>N#XJ4$!Cr}A1iqMWC=4N_EF1QCP(AG z!)lPn23IrCAsK_+{?H!MsNJUqe|)h9e{ATLK!0nfg02JEi9ByY=?xX(m#?nXP={CA zq60}ToIGltWnjb(72f!K!6RVOb)NCii@A0WZm*fiTV-!!Uw6PN@YL+$9h;?}{5Lgz zLobmr_^IE0TAO|8gn4*yGzMx3$vgiZ+4AAm&^YJg@1@HgMdrdoI?UMZ+!1)Y^&~lB z##`b!PZ+&k&)fO8Eyh@X(5bihlVf&cwDkdj^4+Z8UmSo9rta;hpw4bJmC&XKkY>YN z)VCw{c+rA?JCR6vHpXsn2K|9ARBH=}59q8xGv*_VU6Xa{@JPC3V51(s7z{TAT$;hS zTC^rbIk{{vgx6LmJ9?ZuF{%%?{ZxMLS~ubM&1k)Z{61b z9z?&SO$l2=bCD5fOu_IPI?$}1dq?vN0tOav6kBbtg~u)6vJrA%7nS-YRtW`L_x{#r zvgAxLTzfI6^@EE^jf-{W_5Z5@VCWDug@7c}%RsOX)_~j!#^RK=c&Q%fh*)mXZQ%Vt zc1-OjTqS%J@=j37nin_f@a%6P!+)0%QK*5ss>Q?3EpOl@JS>L!V7x7?5Be(I|Y`!7xK^9}zK{s%MDQaWkT9j2H`y;8H;%pg%@LVK zUn6Qw%CUrZ{Ugn+-tF*SKAq*?EbZV1$e247U3R_L9B9wOi{e!mv*fQT7?4Hp2{j5( zkvTxn|h&_mE(!+`dUfbuB1K?sBmSzKe3ZaE)VMnhr)- z#51BDGCvQ+=hgC#5O~h{ zE7&m7-vhpi&{-x=zU-lUOX@BcZcE6va_Vaar>ENMtReQ|LbkMMXX;D{mCjSLyJ^OX$)-vGFswLG z(%V8es*L&^SxfdOa33eNr92LMCCH7j4x;vJx3x$7O2HYU{hWv)EZyo1^MuR>iJHlG zd@x*6vHiAEmC!T@>vM5`*~O#O@^7?;xxBg>DxiDkb4ax|pZhY-tpUNvLMV-WwPQCCAj)A|n~1W&w~^}b&88xWQdOBcMLvlffQ~ZVG}n>M zosRSvYp0b=Iz)u5E)rwx=Lkq!^5v^R4#%a*Tn(ghu}DJnG-TW<1W%qlr)h>%Z9QUF z@vXN1gb!8fI~sAI7gfKGx9Nw3DCNy6l6FTW=E8sYs&VRU*an49iwq;tLqim9 zn0qb-&lKwpgEU(0tbrk=?`M_s-#CQfkmb)|sxlF(&S?8nC83?Tq#4%V4i~j449aUH zaxB8IJD-W*8&ItOR0+x0@NzTNn#e>@`;;2gYmB)RV3mCpgu$OE3q*hXsGG!+Q)IQh zJbn&}P9SpV`59B&*q^oo;ze(N*DO+l=3fYL)lVCojVyd8Fm8;4Siyu#l|UJtxl{@NLdR5St9}u-umm9SK!vHajDvEE?4eMx)elA z{Bxja@pT4{Tk-{|@NPkfa3Lotk+yK|Ia#!W+7?|qvjmN43?1RCP}HV)JcF~T1aY%1 zJ(6^Iv9b+;)54ez4MR!4;IEDDeTH5UA7ZW%_QN+X=DQM*sgcM@<%=``9-4TkpH++* zunW!8O*ZAqhnp-|* z7-gJ`PYd|oBD?)5a8{-Q0w)-b^t@kJlHJ~G}if&yb2Vij;++r@F9+tq9 zBCreJd4uj+p58OolzH z#P=-F58#)nCYW^m!Tpde4PIZ$2f;^lLXi3`5Ir$`q#7tsUOE^>C@Xw zL~r|115tRY2G|XDz_{g>CNSRzp-_pE{w5J6H=mc!vhE;*KV$~z`z1)%OB$3T z!25DuDXg~lCef}apIH`lj_}Uyzq)Q|Rw>F<{!7axn$Lz8)lxMZVB-FLt2u8AmOd+h zfkJsVUaw-ZFB}V{%C`2~KCMhbO}p;U&&(<~=8=4zgp>L&mPcJWiCNmhkrx5%@MKSfbY85TV^i{$EY=U+KO6jb!z{iRzp`K$2QNYi)yjg2X;dQd)!?NL#H z=Moy}OnZ5AWt{-3(EsJV^4)_6(F+I8^5T|%BP2l$j6n?h4cc03OwSy-l?egBDFM2NrZjFFN`i zw*Y{;%k_hm!FGtL*{w0yhP3V4?wlBOW3s63NbN(~vvY(Tlw}9y&~o$5t*&s{(Y#>S z26T|UzSI}4M!VXx5Nxm;t!#xR4SKka$Zoyhg!=hV%iXP$tANW%WP?R>O19S&El-uv zN@AQY(>Qk(8#{OTWuUJwms+wZ=@`d04q(sRho3ql=!SFA2u5 z?`Qn>K2Az2G^YWf$82k}F+!)Wg>pbE-G{vOk%+sL_<5rvCH_z4lHR{ffhgC*mOcJO zV!${bicQXajud>>4yOvDWL*SO1OG$GA}{9H7ky)FbZV>qY`z zUHHaNmKp_B_-g%ZFR_8oE(guR9Sj@a_dW;z0Mt>a-aksz=dFd)R<`GIwgNs5Fgxz- zI7k(Ev#c@Fza&*r-N+ZI0Dcc|xD=A&ykm!L#tc>`QV)Ncc0;#O5*s2VCb6L8EoqT- z$rQ1g1`PDho!yPDI9Z}NEGe0oe6*CliFXm{G+Xj0&e(G;uc2ShJOP5pt~^HzQyA7- zo10w&NxuGN~9-V+M0dA=+f&erpnbQG1i9K?Kf|d2`{(6-pYBqVXLAs;(a2U zmxVGrd+*lR=XWj?nhBN@#xbC4D7Y#o*Af{n@WC%XY%#xG%6~2O1#vkT+fcO2?FA{_ zeelllw-;TyDFqTb67!_ax?I)C?k~Q*l3R(#D+yn;v%2A2qk9!f3!~A=ov^Jho+>8Z zNxCSZw7Iz!EVG2CYj87q5oFPPupZ#IhvpjFfy^mNn#~Jbe+|O**73n`iz1*D z1vDl#zIh6NN!N8fXM5}JciHfvM`Z@wi~z=+$2N@%g`SUwadMXYIS9|qB`L7oJRw7Z z6V3$$#ouiV?zM9EkiIySI#tNS`I3w9mB@A@Q;C1I>OZ9Y9@U#Q^{P5-^3U+N?Fy!}dgB)SDyBzQytM)E_(Sor6K^8zJ zAA>U6z^rL^)E23f2R8FvZ-2hbcPp5M*JV|X`6o$=?<)%SRNbf(Z|Y(jYp8WMU-k7# zxQZeDQr6&OJ@`BEHagw%Hit*qW|x~O|9N~@L#0_LtDV{bg-a#o3Ir;}p-Vdwy2A0& z(uNJNuB(=i_pX^oR48Mojk7m@3cdmklyN~>u)|V!=D%-9XJTuDy5sF#=UuflMcCLahY>|(MP8)X?3zT#Jq&AOPW|sn|EFq97)AU&q)EIutG6q znIE@EgiT-Rf0GAhU?yyZh_F{!4Q}+V2WJCZ;Fw-bHt5m3-GN4N}x!V6h9nFkomCV_H_v6HU(#d14 z(-N$qc8AvGQ(ul;C>cVRgk8>C>;M^#7Fb?I_J9v_r6I*xLCUxEg1IMzh4$X5WBx7_ zX@ogQwIFe+VMopZvSxe-Q`NW0H%$QqjSpVQ780Uv)M{C6GNU%A!GPuHH3C({H8j5T zoyHl&$m3(t2#$NX6D~~XPrIEP4pJL3<$KuNj&3B`VZoF$m2^g!nuBGYu5sD^bSjB# z>o{!d0UoSR9(X6bf`(dO^CWAX2ZhZP5}sob_7M&AJEbdK&K`qis4=DHGH+Y0-A|Qw zKMuXLA8m~YDy47`SK91bO9O17^-rFkW zY|*{DR7l92jfaOK`aU&xd0u0orb}cy#bIGyZ@$+gna8dblC$&E)a93WJ zG8*XDNG0FAWK2_Iews~SG0lHT(aHo_volZ&{=ydkFSHqqF}Ds`^K=xl)(V7d$IJG3 z2X?L6{XAsxdLb4nm+@x;9La#HuShQ#(V`>9iagooeg`;`;XF$;U>jmLT<=6{p(AR% z8xpV{yK03dpL#}(k8k8)lY|%qzqZZO!S3i_ho@o^kC)xxv(}Oxr&zu;Hd}?xPk1~5 zQl89zZ&`1d$0SBzhh;m%HtL*|7r_{S8g$b@7~fTJ8p><2M>4`kkV0) zEi>IU+mrD*tn~N}0PNV-neVWVh~5ZtUP{S}#M=jV4n;7bjWVSzlvLTeLb1HS?3h|O znl)~c=<UE%c)H~rrdW?PsY*TWQf$Vfl)&G`5^}QeJ(mIQY z`c7bIL@8fID;ir#mL83hGhvNVFjUem9i(i)y8zR?!Fu4*43AUTgJ-#0r9TayC@&*J zaz4^!E9|a;fwUkZDlZwEaBDsuj{8xOF=(aS$aCOdcvAKa*%Dmdf)2ph@sCj_Qh0dBLsGxIK1FQpcZIeYcdyi+af-vpw7sEOi|0k5B8_s)I=$pM|bLNm+)ykI`1NhppLlaa@qSY{C<8(TEQtz(Gg!YD^f z;Lb!UXBM&SaC`f0jO=Ck`*%bBvZ1qAgu;boGJY5WKP)QTF?x*q!X@SB zZjH@Cz!kzn!S-0fV#Rt$QCw0$q(HR!G~Vqd=# z?!9IU${gBoeJ57Y;%P%*HKu;AS*1D#uLh-c83@hi`YXY zGb;?YC{=s7=JUCQ>3TqOnxRs>CcVDCMs$r5CJB@u8oi+{<06Hmru?h(|4zbtsF0)$ zUtUI$_+W~p{ELEuCuCW0vKZ0y>@jUR;j2D;B6>H0SJOpBloFsODo@^%KkqB6gc{^D zDnhJ5PsN)AReR&kRSd7t*v;%-?u^?J+yJ|P!bI&TS}60(nZ_p^Uci; zB(Eh=rI31*to-eNZ8yI!4sguyXQX(Ilz$3M9`tk>vD?W(e>n*Q?Zh;WOM<9yV&xG& zp#{IQ{Ci{+1vIL6yPwanguJe_vJY+iCqj(N$M~qGFAF225q@2IlQsf0wC^)UYSCIx96tiB9-+qPW*drwnlZptI@x(VROIXi! zU|W~*u$GcMD^=qa0Cw@n5vg23?~Oe0KZVE<`|e*@L0WWGyYfG z;Y5d+n;i@gG8pYWr!p+|ajungN$^j4##=U<*Qmu5@0GcKghLNSl}VIJQ8V)53)|Gg z{^__K)YrnusUvOjHf3$N%l&d~2T>hl&%aSE#jMN`th~ti;6P_oG1!LoU>gcP>!Z9p z`9L%TJcYl+?YpyAASZKlQ#g(U#0%dfF;hQg=%e@cxJ=;5ch=Ud6uqR`WtA_KtQX-Y z(H`O=cMK8D9pd!1LZvZSKHnSv==QbXN6xTs$SFy(ogEgezN?_KGY$Tzx#)*8vysXF8P7=t_Uz0 z=mq6;YJ7e(%<~EG$C{e85-|kCTnvO&FKG29#MRQVsJ6_4@VdkWeGlEFq`F=nG8ANV zGt$P$#L-Q~DSvCLT%08Cd9a+SuxR)uI?p~aWRX4)wRJ{P+d9B# zc47EE*`J@ojXH7GBY7=mdWFY?sClNjm{_5D1_@x0St7E}M~TMwpgj+00<3nvO}hM} zWc%punUyT{$AJ094vbO@sC?Osl+Q-o4INDi0&47ssuxo5EN_VR77JkZl zwz_-*gG(@%f3@~K^a$k* zYo)ay_E95plw>&Os6fOift88na%jEU*xPk*BH1XLv;y~YJ`@&jo2>Y@w!#@fSBu_- zZ!oxds!4J>zcN|;-QUo{)V`e!i%ZjFJ2-I6YW|9`7-Bc`iA~{qO3SjewShnFYjlwx zfy9VWqC!ex3DNj3vfiliH=8*KoD41^QOQ~?`&GeAY-|Q~K*C8=Oa|vCpCErfQa37% zoqDlJR_}P;NIE?xkDrC5(eH6qn2r3UrJ(nwCm*ra$Wu6pni}cLn>?U=3F8U`3fn;i!wXpaqHZ4p6$~_>GwK1vij_c| z@I}R9vjl5&59)YKT)*JfOJOpDfr8E5o*rrGr(9t#YP#!98cj;Q4XgK^)&u$HN^FA$GqMVGuHk=v`vD8f84_LSQ1ppI+-_?}8$E*aPVGN=GGMk{ z5Q&1nz)%1~oa$Ut6f`SDN&-?!*nkJmVgP}*lMhYsl>i)^VFo0nf}h_74ov(=*oN@B z%)EY(+32V6geXPQsxLwXs_vVdd(Q+_bbN|S2-WwUyOgySGluP_(eWcw3o?CZkCeBU zA!G1GaiU3OX78BJM6wdiuG5?BI)tB&YX5`~5B@|%r+aQGkh^;@YL{@Kf&t0vS{I?< zwQ(sdUZ6w{v*EKxM}nS^<<7rj4vJUoK4NeU##0N{hPPFJUJs*^p=66MkO^zxwl-?7 zrn7t!b}zN$6Q~p|VJ`Xuqm@L@V~L=oI_9bxQ$))IwS4@Uzs#JqZja-->QAE?&%?wv zA@qTzl!s2H(&kIY<JsfIK+ucd`KaU3!m}p22c7a&Kc$Yd;k@da3EN1*f;|Ll6aNnjvFW^4HCTY z8#C@JL&UU1VYf>B#(qi6D0IBA3D*a=bBlGEb|nLXD=K&^EanOn6Y{d-Eob^BqC& zD*<7{9r%B$ny!;Ep-2nC?RUl@UZg4Yuq{~HntYmnk0xxQ)dwI5p|tfatsl~LFUMKL zLvHdIOss5CYu)Prh*&nnxcSb0NGJgvUxP|#jC;ZIUd&;nf`|9d==AN(X^|(3r|nnN zq(ji>Bh4<~SR?UqB^ggJgrD`wp|a>pxskwyA#JHD!pUz;syB2`L< z+GlUde_t_`OoV{X@2uOl?-xbkTxkExwpg%2h-H6oJJ0;IfZGQ zE`CJQ44xxC_U%>q$_3+90Q0f-D;@q0JO8WS-J?dHr+?~h&*SGU4UH~8j@{=M(RP{C zLdB$>ySlWXc-%{`W&(P+A+A07AT z;CfS3^Uu!@b>Ll)I7lBqIH)z>*C~{XC_p152n2x^3k2R^COx)@v2QEWPC&;~Wr$MM zVcP@FL)ALkN}Dp>2`(`wJN0v-e)K@EpHX@?*V`jJ5Q}R+VKF@Q_(Xs-bfB+r><&S546K5NsesSwYj# z2OuY_T&zEf;_c}s)E!)en*!y|eqWLJs0l}1JTnC>V6Lbs9+{w62B7V7LM zZm)LK2S;Y?Zf*K$%}D}ikjnFA&N*C+8a*1yw;4oV6piTMWwZ^pVfz1*(|LfT)k_=F zgKhX?(|timcEL7$iEz>dBb)$J>)joz|9MOvK+?(x09mUSHJkl>Fg5jGL)%#}&F=p& z8X=H6eTmQUO80l@TFtAXytI3eot~~xBGowftZ0Fjj5i%Z-Tvgl1Z9S(yO^MhfTVJaCO;E&(egMEwH&B3Pn*Gxwe6*z>G;X35b$cX%jqY#{mi^2DQNW%5fkGt9eM_;)|aIYPc z{7aYSCP4gUc4~l|5O_o2K!eskFUiEMb zYQEPDrGO@nd^8Yj5!eLq;Avc3p$%3bMiUJOAE|)i%z9On!}%&Ow9}U~C`4?#UGALq z?}@7e8Iz?IXAv|S?bQsmiYKVqWq$ilDQOMcx2(T_NBB*)$tg!Qa=!1}h~SEDDL%$@ z&8Rn1mvgK^L9j%wZ>;Fy_6EHsKYazfr=fq&DDIEsKF`?k$}J#waQiz+bW$?8P{($n z8_XjCXtyf`wCjF_k5@@L28F!Zk&4Voe_nS5L%%SwNIV-#NMO}JGuRUF!ZG6H21@LRJP zD{rE~4v}Jq@tPf`F4BH;FTzL5IDL;>le7KX0|#gtGM$Pm)lX2h$lE{zJ)i#}6r*iq z{(YdR6jZmrJVdr9`oAo?R2}!#b;8Q(k>upXhtJ{?2KS^aZs!NqiMmJaQA{$7Wocch>72meLkK>7QX*m zX@&fcWES7Lzj@lEH@0JkIG>QpjGD~|vP-3{Sednc_6$`i!dW#5or zovV>fpvi16(9(H_x4>0j_3Z-o`VB5YAF#Lyhzc(fU3MGf?76eW%`)qnDAMq^#}Y3f zU(6j|%Xa9Vv|BCvFmT`_I!6@G%PsV|7 zzw94mu~c**x0a6Vf1V3hDlMauzfz1tm|r8}>l3{?z#{4VP=o?9CKG_CpKr&|R~!6L zHBNCVG{Up<2s)aTwX{S9=tbw?^;0m0dYns|LUc9B)uVT&pFPVkkq+ZysD=Xk$VbBn z-Qp5cGcoMv7|VRrpIy8YJ2wi6$ckR~>X!xGMGm!>m=nah?{WHe8#Q|_B~p+guv3uz z_rd^?0pyM~xTk{Kq)uQX#jUiRu!(`##b6^eIfwaNDkO~}Ox__Lt;NLwf4gvXO<60D z%6}r9qmR{1!dwiWiO!QoCAURlda2aVLjkKz+wABzzq0a9p`ir-h;dL!s#y7WLDsWH z0f8h#7ki>6_U7R4TgANHTKXy@a6KO!7V!A<>!%8_v*9kKemfA`s}ZK1QWGP{%UM=f%UAb=$@%5ogsx z-FklKD}5hR=t%TEC1*m@Dw`#f2^GC- z{VIe{r{$;TGqs1@sJGF=C)eE?OGwFo z?YTditBB4`>HawqhE$`8Z$H(ckj`JF%x!mgQX8`0vaD)t<4;|;8~n7$MSo~1*r`1W zxGt(64yL%{s18RB644mwLZwLdDp>>B=~;al(-S)@-wR(^*JWuP`QN_UD*H&Dqf-{9 zbT+Sh00$1Gwv=6Nn2mDD^PfytbhXEH?-b_CD8Ey_vZh%#svpp#^%G2|sn21DO(Nbj z?DCWys%dT)cgbT*xi}CmeC@Qc(wF811}9~Q%Zfr``tF3%KA;P!aecdBDny$Lrhch` zKA{#P0s8+zG@%U%7lJ_-n5=g`iv3eVp48Vc(d72vIZ&n7P$TZ_ZjW0KHf%dzCMZSu zs)!N?bn&ZK9*wvq<|!G~u0u#fO3JH-%Vs1R8S$^ol6l;RG#!R<`DFnnk;04)*}ix$ zM`?bWsmn^d1jQd%f~~pT@GEF&a|w@U_;>>ilaim*nLl3$F_)9WJ$ffbC@s!AlCuS- z`o*k-5=pGNBrB#)(4zOK9<3|P__gAZt@k)s8n@tTJ|5)1S%Nq&9zc*RcS~I=j_9^{P@T&hane;yu-KVJu!-G1W1yIZN{5>GE1YFNwf=d9zE;m2W zbQ%f@i%~&s_Z4V9H^!h_-=2gqxo6iz{0c^`^T%S`)7@=?Pp?SsH=f4iP)4BCJ4Xpu zzPaK9Y>DaB{*=3C^vbjy(%i#*(#hEP7Oro*#Pfh%zq#|%_C)qk8t{)BiiixGLfj)( zo2VD_$cdFMmK{M8B1c;I9F;FP<-(#W*W3y`i{c+7N%c9|4C++EAyyu5jY*&E8m=`To=QRl3I5EoVfmMS=kR z&aOx<1$j}FcS28qDWSALMjS=K{O9B)EWxPBuyO`W&MDd3D5J@>qX@!JZl>Yf=tUKr zrSELw12PDhnEM#$cib(hf0{|@NHkzg%dI%M$j3z09!K*?{~|!7;|CgNW*h${Ic1$E zvVr+QWFk+cL4yTMkYt-chLke_D}Mk70VIvCEb!A3>uCF8{kMJ^hg7}1nJZ_(vpqdu z0>?ZKA;PhfERz+y=5>F$j=_20=A zv~*cQed)7cLzwGh5+`5Ws+fl6++D=DoldSzr<^GLmR4*}kBih2DSK?w)ZVUMKFo*0*{4uNcBSyy7NxtKoNz2Xqg;Lg0; z4bW;OhWZqK&ZGzNf~V^!A-%cq&iQE1hfeLqkdxwf`g;a2j$nxlfiaJFYY^_f0p;}+ z$8=qWjtD^G7KHU^Gbz(KiRxDp(#6uKw#|O?jOMeuGrIL>fS2?WA;KjxvxzzW;@9}j z{s?pTAB-6bwiSM^wGCM6x4U6yDsaAxiMK!S9Ix)Yb}TeR00r04@~*ElZt+H~?@U>X z1DR4BBw)JS19X%udvjf^&%ieHDVvW@0^9Habid<+?ssXh4Jp7jROf%~-|fAu$9Nk0 zWKpeY2k?bFjv^UTBEk{?ITZuYlr4`**J-5e%V0%)g|Z{k8<*tIYXbQiD8p$m_)Y^N zIU$|Zhb_;{Rm6cNPG0r_iXZ2xyw#%KhiAbEy@qc_}yIA?nLD1Tr zvk+e8?pkjtwNp1g1}E{@!^E?KZ&WY<375*!C$oScayeqtHE>DJD$@F>f8+aNr$7DfI1ImlvaQ+&@>>HUf{{l^)jfhMUeE+EV_6K;GhdbTr z5(d>X2&2QHQ)+&fTJx|z25}j3ovfuYU}CzqFx=WV2gkRksCR3_je)Xvd9@q zCXVGXH3}(6yqV*oHx{(|Ov$t><|oJ19ZSQWB){Y3@9Few%iPXy65m{+9XFXb02bAN zZB2;tIFibSg;0kaA{Zm7`p1CMH3Q}fjXdrpD{rCzu(>`jCa>+F>`U;GkXPOu~W8dp*tzHQt(L%0DDbEIp!uYZ> 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 delta 59064 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 z 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

vFih$^S~zt}5J>O7esn6q zRT0d?0{9OkGq0V+CFyIpxZfKh4zex^+qon3g+M}{Kp=$Y>wXj`V(-=%H&~A?AH`o* z&-CL)ZNekv(I0n4QuN!CwmE~USH{@oH59&=9=!n3ckI1ufn56PHWP+B=kw1)b}3Ig zP=;oZ6o#tn89|l4dS0bB9}gJ6pKiDrmLQt)=>gA2UqI0)Z|F5t@{s?du>f~zviBv3j;BRcp@J z9w|t%svnEYRtXKt2b~s%q3qkw6 zu7>OhRIp|I{xC+g8Ur+F`5o6fo+bYMRuw?m+Vf3<-p0HF)g)MoiCR%X^$}D3A}r3- zx23PqDvsw06ofSn7h?foe$i!aE0G-E?cAS(zFq+@Xw&m{nh?43gjun;r%;!c$%o8N402UVm=kv(olcclxPrfDD z@B}sH(IBb9Q%KlBZlc}OG!@&FOz`KZTN}&x%joB1pV!r)E2Hc<<9Pf;;o870%qVj!w&+3MSsBZld8LVQRYG05#%{X%zxv z(9n26FFrsBoc|=}=zdn#)ZXzA?H}|qeK^fYBtlm>P5Hjb3_*+{rsgP%6vbpib2gX& zGq;FnPIas;xs7rkt!S5S=QGxs=;~9Ztkv)~Rwrz>vAOj09fK}T?VNDbKM;mpP}G<9 zkf@IPW~&bd$XsVJ{E)z}3D|9!wQF|uAaPU|l_>{U1~DQ zc1B8KXvX31=s27!21(NHrIwe3A1u#oe(Odli&1TN6Kv5vXA2gTYv5v*t9x6)U|Xx< z1diunHV%B(^bWz78vC&_-&iU7IIy-F<_yJlE7K1<&AQu+KmQ062HzpkI95!z4ZoXC z7|a8_hT#5ikyPI_D!Fc_VR|2^*!s4hiGCQ1AJxq`a{Mo9R*cDwC+D#GjmwYI+Hjcs zBUfAstx5jJkI9c-9!ikz=sd_v>yDTFRE%F6nA&)4`)i;m7eVt0U)WLoDV4RBGk# zA`J`rW3TIT9)aF&%m+|OU;%1IaQt1CB-mdc>FcJSR6;J)8bY6I>=Gmbh_&N^7>P+H zyk70&=k_!vDX5sqSZG zq0bFBn|^W&4ce(L>(YE6&9DHgH@AXihanBjZO4iJ=C7NO-Lt>25{kUCxvBNFy;0rw zhL6u`xJ5r?`n4`0!PdcvCNQ}N^%0`FFxFNF^A|T6I z%6d~huC#H!>q+S(+`aemEd}#~))8~8`~5)GAn=^=ex4M0ym};8iQaqH7J~pzjL3|qDCS4ggf9QvfVFx~I21~02 zw^@!Sj39x1tta-Yy7ri;_myTLjO^-GA0o?8OH_LH(RB|2JeSu#k#G*8zxRV~K&ODR zH{+kR^cx$x6TKC#&G#uWs0JhbaP)}g#?e0; zvcJe=X&>y8WWL+K`uNL03RDP2w%F9bB#T#}I4U`-2xI`Xhqh30$?_b$bx#5AEK2&+ zoQ=Ww!oBvVj#I7m+Pw;3;am7z7(3<}kid!d5Ju2a839%>Y=N*GQ*kqt8j=$PUPeCP z8t@tDfm4D_C~=WCOFCyT3*Ag~Y!C_O8bl5YSjNW$4pZDZJ^E(P`?i0Y-dF2sVgphW zRcRzL{!YM)6`ov^bK&SbZS_a{8`X~%e%EGOwxC)@~ZjO z2u#9_ZQaA(2Gckvakr-wA=wtI zdzT^RYZ9spZ@B1VIJ47)*NjZpK44wg)1OKLa^Os?7HF zNS7nt>nfJpBliJqJMH(`_VSxMHgtX1+40OJKjWR61?fyDQ*hh1Ul<_vKu9)JQjpT6 zD`Sp(Po=s?eb%7C{Vf+SyMG>{JysPpQ2eRFEA_)j7XKG|zu>8tMiOEw%d~$u*nou1 z>SOdLU6smaM$ptcI`XM(0iZ$7x;8rwk~&6<$+6JiImpoEed!tPn%FG|-|xw$YvHD{ z*OwRO`tjR||82tzSbK=+TjO5%7kR>~|44s{^1LhfT)_7CYKf~}$D_MnJ`N`lQax1F zH%kr&e*wh}4@8XqzzO@F_-~C9yz=cEWAU90a^B{yJD&qZu;_?909Eil#yO=0@8hTm z>Gy6aKi$Cw+M!a{CY@BX7MkoHC;uGuh`S zBE0qYn7xeOvM0$L@gjI`T+P(59uio%Q@(9PMn~z4Hq~HqKA6XFq}}m=hD}3^pHQRF zf`~L_`-pc6@Y5>n!d6mu^uf`|pJ#c^a(6vLPTOJd272_jxU)*5&?S$$jk2f^Q+vpO z6NUqa>N}<`#XqtCd2AJdG#C$JgIrX-I9!f}d8AAK(bS}DPV6yzj{F@0ddVOlEC-CB z!BZMj#ZMlyQMf!1Fv&`|pDy99t=;RMF-js69Ak~*r3Grp$7J0W~x zZAU|wn%Mm*%ElMPlRaNi8|2;4Ordx6{mpSat|>`g@}j(rnCXkiE-%JFjr&}8CJx7Z zz_KqEUjFiIo^UZfa2txCpsD@fHe|qu1sB$!V>Q8TC<1On>)!XsT?h#{v5Yr<_^AYl zV>3mTl}AV1SaQ?+x^|GRmA$aS*Y|dKEaiiG{q392;#0HqE9|>)z1{iu`j==029A}| zRY~qJ&gr*?1L4ZL`zn9w&X=E^l0Q0{JQU>J(Rp~5Os7CES87xZMPwD6WdXt}mOj|$ zv2Li~lI`RXr;d9(*X#5dmq;!C>uLtzdPKGeMRhf+n4xA(>R2mYG)Z8!VlUb3NW+(r z+1+P2HFyQSyP%@q?{zP=h3+w$2WRU>pErLIZT0HYyEj(_qb&P4Kjwdmgb0cthgA@SBYui5YneJR7m%>f3g&{@iBx--73Cy_uppy;%;#1dItfm#Ed7@)A^q!06~pA zz!wkhoiR4NvBFCgAIA?<;y}ajT$Q$>oijQQ%0-_J>2+~4mjosxr84aB@m;B#Hp$DQ z`g^(<-@Ts9I@J~PnW5yW9E)@CfD<1=?M3Bq(DL)D*v$}aT87-s2-n-R0e10ftntl+ z{a0)A5k610HYcr{0w3}=e&o6aR`mNu5}RM`CLgJ)E|+kp{~5u5&4Qk8Ao4_fAK^&s zmW5aJw@Vff66?1MpgJML%m2b=S#QiCVTZ6d1X%jFF(>iQo`dq_Oz@mGwJIcO^$&zr=?^nYA&OfQp6VB5O1RFDyM6y4Ny`DjjYjWKgoLfvR zdh&8`2Kff1Hx9nWgw6&=l%E&)y2_Fh88a262T81+@O{6JF|mwrFWNW7(l?`nQYrA) zpuA7RyH;GZUrW9eZny;q7PA<>OWam@?g}eGGZ15>j>;l3Mf9Eaf62KbZ%dA#&;koh zcr3ht(S`j``1N+AA_<$^trxSr{fFeDCyEyik)Hu2V~lWFv$o>oz8I3|aw)|~QV_S< z^h8JlpB9GD$kko4+jM@i+&=gmvd_Kdk;n?DQNR4VPQRm$1a3%seqOOB2pg)6OoJ@d z9>~>tgDDp`>~)Wu502ku zx{SzeN;Cp}%3t6Z(s2kPqEn&d*vi8mcxxv#)eYQ+@!&SZyv#N%!@1TaiUkyG8gQzA zOm_oJ-hzGTPbc^3nFl_k96|FO6XZ$-gYu>rs5cN3UC>YObo3`x{+LQ4MGGz-+JyHb z%erA#fBj}TR?OPJ?`B&X{J{2JbTpA8W200lpp-`VfHHx{taLNysX9nM1L+(7J*KEBsarsuzU=CM_N*1m)T zN$OVue#1OCF?{Asn}tPLR#AVgJ^TzqnGp=w>vd94)$dpwO*%!Uo8DY{Z*&Okdc2cT z=dsSYrfw~ndu{Wj*r=5UuL8dOKTN%aTUOum1xiRGAxJk;f=GRcm+p{~?(S}+Jd_~5 zsB}qp2)wj(ccXxSG*TkcA$2$YzV|-&KiJPXd+nK7vu2H%84vtXj2-Ha|do89_!ugjL9CpYJ_rj&B44iyUP4t~+;C#%7!2_&1*%UD)$JvF z1dJ+w6utwue5~>kZ*c0p0xYM{C6Dv-)#1?=gsS?I0GNFy%o@_q)HYz${_RY0JcEh$Fya-IY?T8 zJdke2q-Xr6;{<%m7K(4dy@huKv4;}%#w5>^ki?7vo;%<23rkq@$J3Y1_I>bMsfJac zQ*;Knhep{yeMoQqm(C(|DE0DPpq18A#6buPXY@%wr`gmE9(3t?^hA=z#yye8Q3a`& zT$4ugdg>+c@IZ}*c>tEI3q(UYU_zk_3233w{z!JT0WeG@SR3R6rP2Mg8$DPDbWJA` z{U2G;znV>Ixf;=j7NVPaT=gbb+kb^ z!w%ko6EOX5)Wxb>3f_Se#tx7Bt=)W)W(yAhO=kiQ@CDFxllS|GxF2Ytxh^Id1yI&6tcZwRk$7D@lR2zH4D-kSvE`vScT zPzU8_`u|j~kRh4hIr4JbSaC`Q=JH?GQRRZ;ee7uT$-^NzfBPV9h z;=D+pB@SKQ%b}@Lux8bvbhRM4j`?j`x2>m9z*T#W_fb{9O@W$g8Rrd*ciQbBksVeb z`R8Y4X|o@)!BfGz2=YY%lXA0o&P%=q!rO2|$=e-&~_}&3^ftTCn}3SPf80G^y2?9!i*$k2D|?PEJg;f zuP@ugQ)_tySv`Hh7kG0dj^WRm$nKKQ`aT8Z0|w%nlrIv0%(mJ-y|Vf0N5-r3YpfbB zJvCHp-8Om!-slf0}4I3%GMom>-TzCV5vw+I>rz zkxr*Sed)=dtyjnFU4_c>v~^KV_Yu)zy2gj{_by9qdeg$f+2!-=4X1}f35qI_NX zz)|(Ay3$c8RReiicw_Jq{DOWg|N7nEjtwV5V*!lL-!bU6Hnegs5p2H;YUi7T6Od6g zCEedFXg+|yo1{Vcrhn0L)cjuf&xLMCgGR3>T|?;Mg!U_Tjlj2=L3Dxs_?d-rM|b{4 z5$21k5f(d&4W2smX*0#mjVLJRqm>_``ddv*DEZLsR4{2&X7RDJgs{G_u% zkq5P%tE!=I!H!A*!$$yyz5s?@0EVkz)(hDGqA2|`!1M<&q?))b^Z_uWoF<$p`+maF zs~yzL-N~veE*1xO80yfd3sFe$0!*nfj&k4_$cne_=l{L9k)UHBAZQd$e(^B^%>NIp z4JNe7@4T7YwQ=+)kvkoH93ImdkEX~R^r6s@y}ebM*1btQLX9ebwxrrhZ|iI#3X}6# ziS=*XbTj_Pc(d(k;lE@`uef^r;)kfN$c(kjUQ{V&+;*|s8Q`JgXeQ+{S}JfCza*|g zzJo)oR?Gp!X{aA>sd!ag-ySOkyAXv{?|$bm@a-{tcPPPRRas{r7$8zcecq`mbShMt zeJ8I#tN&`gF|^x-qEr7D0$Gd>{H@=X-J zcsdx95U(LeI>%r-s91#1u~1pgX)Rx{oq#lX#?`iGx>0|(cd93^&d10h8gQ1X1*1A2 zDa-gbPsuUa`eCD;Z;)t_zW37=Kd~7tXd2Hr3-`>C`SWy+szy^|teytmbsn1f16yV$ z!|hA|QTVBrdxsjo&pg43-mHteUCL`qG1{l2wFwS-QeV0U2MO6Hs*f!sT$b*{u;ZYs zj%Nwzi$#veTJ5mgp9fwAs6fF$pQ^cU-do5^SWIY9FG;fa1WT;RpH+3$n!EPlg(!PX z#^+5tcY36D=a3f?AQ+hr{yn{=d-TJfHCCbNbsG1RfV^~bujrF=&S-@b3@=OLW>zzf zB3I6|V)?2*`{xaBrxw8-z~EC3tb=lA;PnrfR;Iumz{b%+W132KbOLw4_~`#G;SI1u zrw8+X%^)Yt04^9p5jL9@VTkr}kQ06eIbkNq35$U-nLi+@o-Q$A=lo4Gw$i>W2yz@) z<)tS)|HyUz1FmA+jCY?8a8?16#_q5nU5>@N7#l{XUR6`5$ZoTgU~hp`nuQnomW`tZ zV;G=k_aO=M;rc_^VMUQ`Cv8z5Q~cZcZdbaHvTo89(^YQMBx7ExH{zM!j%J6L8dA&0*H6;UQAl9a>NLB1g&4D3tN5v)6avvQh4RYO$!}k1EPa z((`O|!7LQ=VyOn3u?T#!CU^xp3#F-&nx)9kxrzm9`dP!nmV?S@Cz=oQ$a0ghXy4i$%MP9^|D{3){ zW0ODQfF?F9wJAhs@xwyKERv}w{p461*8zT%EVUeuCDC)PifXutW2aeZwg>3im|cST zf2Tm^)^MM3${n&EP#)jUdL4sVulPvZt5Wa~?Y7JB+}8z-z>uhdQ6$`x3vBK7v+4UD zh{%$waib6cLnb~z&xZnrO#Hwdr~!3BE>DwjF4b)WvA;SMYW?GxQnFvyws$(+Eso-m z3-nT+^2lRksseILxdbk;P++_i|1j)(Cu2H$sc8w`f1l$G)cz`^(&y1UoNEDwL>*pA zxk({J`j-z10_={P`AGZB9eV@3FScFutdY~r2}xJe-5Tx(10WTdr+8s>ANiq zU{e?Ld%`zU!gXxrcFDZSkMjJZd14t{j`WF=Ns)|wqe?uOe+#Sa)cc_dPXif=^2NcB zNX3MzJz2Zse@lUFNVTB|# zHKqo&vLvuKS)IJtH~QbNm_~`5*G9n|&>2Bi5*p8c)I#kg#URT|Z9t`-8g)zsJRl?@ zg_cXnAj<<^UJ-$A9>Q!oKBcmTH%MBoJTR3G#&mcUSlYL!F+9;2`ohWgMp-sw0EpC$_I&m=SVQ3f8NG!NSiV% zqE@tc=G#~gonLS`&_%dsL>^W$($-$0n{=RRJtRjRY3^O$lAP~*#_&xZ z_}QuQN~+Plb_yJtTO|i;6QTB6gu;Str`><;{?h^3gy?0iu@o5T#VSFhqrVg7Qwfl3 zOCNbvf$F#rpg2 z<+MOst_rl}C7@p*3nU!6K*BKxvSNQ-NTK!)&}6J&KS}~fi+w;|4&ysn%o{I9QR}(23wdu9X`o-h7ff}ZMai`qnL?HEdWQxfndby=o6OW#YzFl5mnMHu8dg4Di0nk)Q+=St^ry5{qOtvf zKtq%{yf<2QD7#wbnFuu&+Krw_K4I&xSvpd4pAV7=E^-lNux!JG7D@{wtdayyx~tm{ z^Q=pKE@^q^l7W3=ZSQKOdWd96)b>4l9&?oXvy!mQAuw;!4Al1fq0R_mwTBMAexK|- zah?Ir0Wl5LNSN|f7n503VKkiq&uEaXeKx>utppd{Gt=VTt%emJXHJ|BE~VQlr`m2bUwm;TE*r>J?M(OQ>anD;e! zmhs1gBjI0OWABLMvQT9{ZmlW8yULZn!``pU+jy^^_0q{E5Jp4KIy;jjl+jEA#l~4A0BE7B@X#4qFG2>@8Pu0H^qHVm|V(0S(j`ioJ zTlGw#ccU1`OCW3>UvYe$RGk?wetn0%4F8_00YQqv?Ca^scDzgdtFh9PFvjmwtL6g zUOv5`&K z&SHACXSQA#^6Aqg;ly=2Uy)p0ASdThd zdK#8&d*HIDNM14AX9-+4br8qswP4L0f&n_^9h5&DRz#@DV2VXbUU+9~%m0|0B>3+& zv!~Htl)d&2?WEPSyKElkLyWC9&uQUE2Zqw9NWicdo+^Lo*ZkxqlP<(~ zGi+#YKljv=N^`H6kr&%_OzpFt-QR9rsxgYsGe|af$LeT`=(Ubp#^`iYLK{DO-^uJ; z4%yzhc;UbJ8cY*T*w?KptbF<{zp6fSIKy)YYc+#KP*X;5Zfg4vBWoxytJTB0%#bO4 zFSZzwTlun6gXIx_G}lL3A3O9cLq~haSAT7wl*PO|SG__2Q6=RO7kEu!@d9(nu(*Oz zRQU)cA2&y9naL$dPbLa;@RaKzS!aNpkP7;l0vSk1CP6}i0uqvW5DO+;5m|4Q-C&o8 znJm&xhVHbnG=fK`?hRWFohhMZ5UE$&O+~1z`X1)ZBW8<%1C9?>D{WaE&^9&0dB{}} z5=1es`@*U_Z7F85T=xOS#Z0z_$g>`~%d@xL)Y{DUWXVcc%($+~zbW{;y!(fnCQff{ zhw*I+1>TKenXFpD+P{`JKf<}`^FqvHX}&Ri)UgdK-6Mzp1$V&vnQ=|*K}WQ&!&XEb z=$N=2b8-}wonkz(@TL=m9_;R|=%udG9faH_A8v2#1QQpcUJKY{a%GI>h6V{J$g z@BSTtg($Z6;p4=wK%tAA^1bWyHp#X@7^0sinNJ?I-uMa`+4z=s)kg?xeD7_BJ$6E3 zB$7uo(+u|g7tBPzWWl z<2WW%DP80IeJ}_zqM7V?QHB8JBgM*G)G1Y0&uF4*Su%D$%>y$9yZ^BZsbI6&rzzGH}l+@LT9ep>UPzZ`%b~ARyWv|!zcR}{h$2Ybm>~R z-#T7EsrYbEalN89GL87*&`JsXQO!)dv=aw#M<$Zjm4 zxmeqZqI+TuazcjhBv9L3d6EjU&NGEB;D~g3BYp{)cZ*}w^<*YQ8&KJIxEc4z)zx0X z;^T-p!{+Rl$QW^1x@2CUY9V+~RF9;RC7Ro~5TzFS@V-dW+@`NmO!lv_9~OmldaBQD zOv8*^y=~=_ZQ=Wl8cn=u=g-KTg`W--7@VW;&^*`5TXvvt^0Q>#DufGYit#H=j(zT! zp7w!~yy(Pnp8A-9t$|dFbDnx55+Yw-*!>$n#Qa)R*NDq)MY=MM6#w$@;N|dASGf3Hkm#^&(}cT;eiU;=XI85SI5}O zfqr>2aA%N~KL!&HCZJ*P9B4THfQ(2Ic)>V;1p@a(B_)_}AO$e=8(&p@0g6*SkdoN} z7!$td@JFUTvsVMCtf0Y-WD+$UVm_3zsyM8OFU7E^~Ap_SLvvQawhvgY+&f~ptL|CkHp&_Ax8l1h+&jgNMu!OgKbiC^RMQEjulOI1PK_*HCfmlTunk}>SjR|7q33)bxe(oCR@?%8f@BB}BE#OHIDIRrajT;wJz>_lzT0=?s(Nps zE0w_0aU_kJn1h;VsrNtk)3!9l{U4-2a}~(Hoy4kN846Uh`q16P8`#>Dy}liUsBP6Cdmbh?JH@Qu9dQI2v8R!gG=}ph*|@Hnr<6NyL%+=BHX;ysXpvNgfrk4awH>wP3A4D zE{jMU+!0(tOwc};1Sqh?QVyKVo`H*_Gp#@fa`ev%1JY4}l5_{gf?RLrFLS#1Wjfl~ z=nwWy`^Ns7i+TCXZA=NPSWSgF6lV@Ud_Ow=GqvS@{=c@Jb+GC5ujFpSN3N!YY8P|u z$Jb! z2}x7zgml*wu`5ovTs*ceotvLXa@h)%MnxMv>+&=Ds8^9=W_jV-1p()BKeq%t`mW_P zq)J+3HZ@nEZfCd0ea?Pi8@>y6X*bc$YN?q%w8;e8ZdztD4E}!Yq}((z$)PB>?Rt@R z77_;@`xX(ZZL|L+B&E)3`hr zUZ{HEjYC}`E)YcW-z@dMV4l?+wn;0|ql->h+}|cOJRI!JEsbs+_UsbO_< zm1fkONclL10;8U=vlBNb#2ZjKPFE`i70Lc$vlsranDjpw$!wztF7&T!)y(ry`EOj} zr>Gcg%FUNe!3&&n3-z)EzIZ(w~YI;9XrRyZfKAuqoKL_ zI@7;zDTLLbd(}81jXD!r-ms_AMMg{1=r5g6tA3;GHo*!pU@$srz3a-&EHzK4J&;&% zCJGI{P@032@39czGZB4bEYLyQ%l+*5j>V~6{x>$4VZB|hKJbio`6#%!mvcYs^%ae^ zAIdb&2$xopeE}GfIGKp2sKGeIgT>K0Dn&7nT(Mh{m zyiPMmNMOSdavZ#fuET?n0x6;Dh01~#fMG9y;k}Fo8>}zQz|ul%1;MBUY_m}Zw%uD` ziSYV?RMK<658V5N8i7eCILHYjf)VZfg>DozN0}_0fF*MR??3=}2TFmsy_LJk*q8&l zjex-L`2`S@{hmMJFwqZct^)*t6L<%t0YQKT+UM1PAK(TDs0Rli0Cc_4EfUo3rp~fW z9;}4Ke26=-a>?dGtukO*UYOWoy7A%j;L`UCu~vSVfz(DVTTFY8_IxKoD3t}KsUMPN z$3%7{UxpGXbZP5|xCCre#KAKJw) z@pP>17Wp_5Dqj4t_b<>3v!)206&78l5jetlsOa|H067*r%??5fz9tEMs2+8tgz{Ry z|6tlTCLo2A?fw8C+?5=!NEUPDj?Eew!(}E0C8q9YZ`CQaSoX*x9P|1P zaqCxw*+g>ONi7I-6Kr4mE?EzXd3Dbxp|WdTBLi!;JE|HJgE|=}&ETvw ze})-_iEXyD*?FdGsRvgJ@Ll*1&`R}ewohpqkQB$=~eBG>l$g-!Q= zn4Y?=(WP+Nse}@1-9F}KNelKuawyQ?A{;ahzmkg5qh_6#dZGOq`knkm1$V9n7#4T- zN=?b5*Q@yi;Wx~JFCaZ%f<{MbI~v+lop9l8DAmXdKPQ9h8x+YIi?iT;8!gs}*~KWfX+nfSvL2SRTJK%$ml|D~j#4ux_bS;CxepFGen_ ziq#x9h7@tyWfw?F8`}jDZ!|BfI)mf|qrN!QYqK1gBX}Q&3p1~`F~wW;XDig1ZiBYn zm+htn3Xdn6jSXUCN3x+p%h)}WkPSy+0R(n9uz^h`mjDHQ00pHWClm!K*%HVJ2ZuW} z#@iGUSfb1p&Ol052~f}iqG8KClBqvvTB(7i6@57Fl^@vUZ9XBl!$c`nKU{~O^a7C8 z^CPROCvR*vox$)qCKx{V24wX~h@rd7YZ@|aj1ZJDQUi#!AJ}BJfR*-sK*i#>O*qrC zaKb?cmPpuw0~CVpbq^4e$+RdWC{A<6czi;_eh3{ zmSb4ro*BNUo)2v>9dTzxN3W#Zzj<-t0<2iXA_&e)I`Ut`32kYli4oGy!p5Be0>UJ3 z2G9%n&6KZr`3mCIf9{ay)93Ar03(u#&|^yD*ro*u8|$FQn-^>%WhCcgz#GnHw4^CC zV}C#1X2-DF8SAToM%vPUcB_S@idaxXqZe0Xj#1DX)q<2vMN?tMEqcy@ueSF?ry`fE zK2HG(W|q4>^0T{~LNU#+YEx(ZrDbOkJpE4uHR2~26^SXYFUjB0=b&SJ$@RYtod-iE zU+AThQi~ruob57=ap@e1bx##$UxHsS27bZ4W3sW4q5B4S36}s}4`GA6d>#CPLm;b- z2X{ai%=x_eA63c->Vo?PgY4iXL;`8KIApf40yY|510m7c|IFzML0#}4c#07!BVdb$ zieGQjr`Hssf#J&|V%}^I~7bx}|pTv2oIV4u8KT#uX<$hE-t` zHr2_GQGdVeSK(@8M3RJLOAp;9lb|?@clF0s@EQco{Q*LLC0!y7PD;fd&jHI4aJIv*Oa_qmf{r(bav{Hd+qPI z+C22%`8%K9<7+OjRV9MNG4=N{frsb|GLp^2`t^^Bt(6wkRfz}crzQImT1O z^pS1|TQ@PEz1u|=!8X}N7x|#0E*Ab_+*j0q%JWu zmrdhRm^c!5VrXh+NpR8^Q0U@3MSRF1S!38Z74l14X~Nw&NLBXR)0&nE0@P#M#>NNS zxN@bYjlo8(a5bdAe({Pmcuoie>?)_j4Gd89c2q}GlBf|1@Y&4Y z>wY1xme7?f%OipvAS$7vOy5&{RC5VzK$Tkk{AJ_qII!Y_Dv@c>KQW~|&s>e`xDfG; zp2}B}A)2B%Tf^Z20~|YOiAC%Uj;Ih1Ay0H!F$d`zo zN`3Zi$M?bfBpgmTyjp<@5)xBugj!!gfWItR=J$-4{10_d!ehOozDOz08-r)53suyg z(2)H;rW+as;_lD1bKN=l*7#hBvon%1Os5XZGY>zqU}4wpiWw2K`Z2(6cX7B!nKN6$4@bN~+En)ULNXlj5tp*AX(x&;M1JQxg;f2P zEnZUOzDWM>N&Gric^m%m_tj7OKDg~p-dRj!e9nO)tXyee+!+%nuPO~G!Ve{)tv0ss zq`#3tmXBwycUnS;JHF?9}btL_qO z8}Y2D8oQAymF_?M4)<8wnR*-;^=0bSk_+$!8z~ViqE}sYWaTi9(9W=t>I;7bQ~RSl z|I8CQ5|pu=_&IUjz%Yv)Gi}9Dkw?C1IPT+^uqw=0mu1k;H;ELtbTqV-Q0jKZ)m1(H zs#3*!XR&p_f?b$W%VcR)CEmUYZ(TbL%as46HW$^Xcv80X?b8ZaKrmm&`MbE{ zSV!A!{QO5xh#Pa`Z2Gg5WEC{^)_vL38(8!p%g+%Wjx>T8^o@7SH-?y293Qe}`>rGK zz7_rozau!)@2{Ql1mSpaiMSkfCI&w4z+X^b*73bvO69NGx@zxSD1GS0dRKIyaBx6)T`XCvVhE%p|-^s>%}6sOW7H*>HmV zH9g$jqiH$N=#g)jCqG}tUP+b0#o|ZLCkURq1iU;=COpB_>IzX-oyL6r^gOMmdHQpO zvA>dR9GTsUa=b6GwDOec2<1x}xpq9WDsDou0&0eWoG7UbyN^$O z&VQSZ>`!J@V@W51#XX;HxV$4qjo02o_}ifdvJ#%sntv)no^x@SVA^vOW{ZJv{H8&> zhnHR8}9eGv=xnRAGxlkf6*|}r7hTJj6n4Wj|=~Kd5!{@x{VZc&vSzktdMw3HH)u_ z4Y%u$Yi;T!)MF2uqP6_exl%UXRk+38n?#=e*jJD`BsCLWX8aj~qrxy?_U^kv{X6!6 zYOhUQcT3D!L#%90B;{kI3QA-nK89BQC^hAWBZUU~aQ+AxPlL}pnXw&bmd?) z0W)61T1E18wtXMne(^(plSrn&O~tEL+dSw>Dlqvo`S>DEQuGgkUaaE~6ebIkgfsCV z9Q!ha%5d?q>IMOp>`!cmM)i$Cf|!Nb0yd^{U^LAP97CCDg$mGg<2_nTJ(J0fmv3;d zG(ct43o0XG&^cwP$4{yO8j@ttIraXZIbDR18w|PxIhie(`>jeR)3XMp5eLWzVi#Jd zKd~YEWq|{Dq7WttgPG4FkdlcDvXZVJg1KMJ&QNWeNFr5<`F`g-I8T($?64#vu|;+P zQ>1NOC()iF%izG}ePeFdih7^zep%B~L#-6(Vg9MQSkDL8XI-)9q|JfSwJw#7?vVem z%o9BFusz|%!qKb~J^|I5jRS{t6xeI=KC5&BP9-W$RASkR4(%xqHr-}CwgELp{%ZJd z!Oq;?l7tEBKH$z9BCiXX7jG3(w))k( zI!zJUhuU1Dm>er}b6ixSuvWYDML+>cxfdv|DTMmjhJ{DVT!%z`|ZKT9t1A*84t@kES0ONKqAfcZ~E&x}!{TyTJ$M9(qv}h^SL=j=t z;uh@AHUk@q&bn1BZC5(@6URdYfWU`gz|vZ`les&XI~PimeLaU2-7UIDpR$yVq}j}i ztMXgw+?((DwqgV9Z=pDQmYjt!OK_h%qMfsX)@x^zT_?%p7E^0Kz?j32Bd~Y-T7s;+7tcELd zCM!y`y~Rvr2c-Z9C|3kZr4k#KU*v=TzM+58TD0j<+SH~(tZOj{C5L+<2Q z8nVw|lZnuU0c-S9ld%<$(U<}lmR|0&d4SbwjtxQ0_j|v)QR3jhA<;uxLm?qh!R)G? zs3uGTm{3scFs*pZ`S4bDdZXpwW_7n+wL~wlpEF#i8_FZiGZ0ZJ7M2mDa;#Cx z8a;0fcjFsbB(uKYpLme9Uye;BcK>JV%r0wn=}?)(cPmT<9a%y8W<5I13si zUjf=~s$~iCY=flpr{vZ!i-9*Zhp6R>us7w)nDilp@@==}!OA7SWG)C#qa{YnwEmT5 zli69%;)<;_PHA30S7@(Bq;Z^3Dw|%xHhNLPE*V`cZob?KRp&XM2flWMOoa#`8nJh! z@vju)IexDESz&%UG z4|czsu4*y;7D|56;*7hXwoA=_&yqEPSkMeuvJwyrAP@^66A%nq0A0Qdv|Kl&nJj~V zF1H3^GCFVx&jDTj2J~#kL2dXB)P}ymz1}I{Uf&<&ST?*%B~%fcEr0yD+Q?I;Rwg-^ zQ7uQgoTPN7lxJju)SM2*REaqB#-2Rdq27hK@oH#ihYu_`#BY+Su~jD?IyLC7G(6LQ z{!t|9O(>^c`*}9>wD6-c8c%nGRrvbBOx#mu4i8rGxaRU{(Y^c-j4K6Cy5_NKi3_~N zOWWZ@3qF>&8Byz0`s)Oek*mv}$z0FuU`8eo>g#T9s#ePFIAp2Z_;a;ixe-KH9FwG2GPlM}TjDoC2-k}M0$SDOBYH^s~R zJ+P9FQUueGHdf$&<)74_ul`!0&n3Z~tQ$VtQK40{=l`P6_v>-O(D@plRt)5P1$Mhx z@i(pICH4ndk!7bmqoj);Tj2EEpR*FSzh z_(IUfC_Q9-#QZA{9hKI`EPG%X)rNBMYI#lvN4im&dWp}!8IRrFddGUzOI(+=me56J zXS}@@hcQcEd^HtTn*oSoCbHqZi{)meLr1$;KE2y7O_cyiZNma;Z)`zy`t+N3RAQFz z@|t|yNHa!LHq-?yr%W2RDz!S<0`wpe;QyB8dv15^F zipm_J$Vtva8HTru42>kXQ?*0u>s^uZBY&Dq`Nou# zJ=dCGlc0O8A6wNK}6G<5F`MsyX_Br&tES(5l*OK@p5t+%FpSU1wUk1|t@DfFY3s42csU zt201KmI`3F3ScM-V3-X7wpt1VgNFcy$$+CF031yyNXZxh3_ELR1or_)qYK#TOF+@! z0ha6zv`+8UY(*d?dwrjh32~BYfXQc1K+$-E1AGKzwK{kQ&;dm=3CLUqLtT=FNS;*%B!+OKfRZ_1^JG6ytHD{A9dTCiQu;$tcF<7bs<1;zP= zn8?S#%xsBTm;Pi2B?`@($4HFbKte&odyD>_VFr6|CUyy?VZDE=8`7*Uwx)nnSUGWu zbA4$8Xu9XXJ07FM7;JQxk5p=|L}&`Tjx?4lAden%^?&0UiT}vw)UL&ew)>c_j0CR( z!Hq^Z>Qh4_fG<_Er4He>k&+2n-IqpsNw&RV6a}W$e~#VlWioNG!=C;-z!^p?qj7_x z1Vu`TsM|*HXeyPuxP)h5Mho`7k#B6$Z*dgvNLip&UVPp8NhVR{g^G}g(rtCcI5Bn(8Vt-W6N)xK_*)U z*lIwRpOe3OnX~HUt+`{8hUUVdfioUk_TTe}-Q95& zQEthQjkVFY^0zJFg9*fqm&p)%@r%;gkuB@pY&T+18955)?a}aDV^k<`y)i)fgq`zW zd&i~b@T`KBhpwgQV(Tf|1K{ z5Du9@I1Kn73@-r;od66C0Ss9{G>it7(fx9{^8YcV!@vjar%|@6+7dylPnHC6JZ+A#Vi7`K!@{oH(s);{R($r zOAc_wa$Qgx-H#iH1;1^JjLE9m`7i(KqRnV+^YfD*(~+alM%Dvv#!i3&T3&MWw`+{O zX=zbqP2OgtSnl)YFU8e8VTG{&%Lg2i23tTrFeoIC)e&~vFb|~F_qyVY^m#j@4)%ol zJe4D~3Z8#5p5$hq4+)f9I`$Dt)VWZtez|L{Kh>MXn;jNh@;c(iwIs96B0!N489|hd zr7~OuL{au0%+zp?GY>>tvpwtNJdD_9_NMR6lE-Ke(<9X^kKJq16R-Fu2e%T{<7>nH zF))9Hk4m_F3|^SFj<~io#yW8lpPvj!VtVp@?$u&Cw9*Q6^U-Rq60!)8Cx)nsn+T;7 zMW`*8{wj(+aC15aFnl49Ez#uC|AySHB<0-6lUy1(rvcyXGBM7AfLhcdG_S-bfTk!- ziBr-knZA35kF~;vqk3^`(F>+cm*}>v&B~~R!D7_fg5ZmJ-(E@It=MQ_fBg3l?U6&hJ_wrehYC7!AQ&94iD{FelQinY zr}w1LGqnF;awGewSz?dGXotlxLo=w(p9&6Of*Om%(y9aB8!F!DHX;A|lYV=&$2MXA zzF~nu)%DIgu=KlN!9=-2OAW&8Ql?l3m$S9j3pR#drlXH!ln~GM(;1*(8o-c}cnumX z0x-B2648N)$NK>TQ4kHS0Sq-kQrZV#ct2o31Ynr>|LfgOf~52oL_^y9q!dKMmw+Mh z`Cl}o2hk7>gkygY4H5q{rOE?Y@ji%#9C zfI*-mcn37W0bul+>tN<{mr?V9Gcvm(R_-kIphIdC$Olv}&|`9$V!88!qT2d&V@#zI zVg6g6?_oH+^q_Qxe#l22bwHye`;}c|a0-VFxw6&|V4?sUqlxK{qquADu=Tcdk0wIM zBC`uZ>W7k@L8?N{Lvs(jmhoGU$%Z^>7FS&QQ+UW3>G_WD&EvleJP@Mvb1#YCqvn|g z%15p@m}#+xDeuXn_in@LRY&o`fI%h2!Hst+EEB*+Bc0KJKl#3?-j1f0 zY)*|~9NX}nEL}R=@DeKaGde_Ol%-msGa{X418c%5&7%o(|J%naYhA7xZ zKs@%vk*~LhuFS=FXFmoftN?=G9r_{D+R3jR75^N!PgaMDf>O5&-+2%4TKyRZ+tQH! zz76`_*LCLWsI?`mfLouSaE9UOp!VsN*^lfwj&Mg;2EGE~QiTRp$tST|@us++kbdIO zr`wdOT@vBHDbeQtt26_KTp(f4x1$j=Db^Tz+x(LMTl;BUuVhhph}B^R@)IaCTe`)i zH$s9U#Li)2xJ2Wnyd~#GXGVqxPQ9ESuJG5O81CpmiR9r5A5_Ad{MAg{Fj-Q`M;2&W z3|~JE%RlcWH1$+Ot_j1u`b7LFf>KgNh^wE8YgCAt586t=s`9I5KtP!YB%b0;1Mb?$ z%Dy|P`ujPbWq^YFOK1Tu;R3Mds{km-1Sp^aD7aTL{Q@~*At=oXKrm7T{J?$NjtZb) z5d@>B00mp1b9w<#KnQ|S2ta`s$O&E7YXS&>nr;h3L#zcP$Q`t9nE?u*AOM4M5RGgB z3Yw5x>!VfhleYFn!Z#j#brDuBEW330@v}?BkG^>{tt~+DD=$KkgpAcHn44gx?9v4= zr8Q6FMun%9t%hH`NvK@qA9L;s%o4}Rq~a`0x-!=A1~VRt?G0bP#rVR%zzyrWi$g)@ zRP7Sn0h-FAsjg&5k(P-BPV@4GP)OuW7l{PqgnG6KWr4q`ZOsRRofK~mZg zYEd_{Tta4cY{jc0Lv}HCb+0LH=H!fM>lg)tP7pG<1PO>@i?x;Mh>5)7DEV}okN7Q@ zWTLH82^V6*a;^eA3^o0IAG~)fV41TCV9TZ8@&mg-P!}-Hm|jxF7Eiwpzth2(k#@RJ zL@~J+mHH<88j3xt`N^#lm)(9WPcHFXsbro(G%fVyApbB>)$)rxSx9yy!fzkY{ze6j zR>j7-NDSs$tbt`Ra#JNC;@4gPhO^`nqmN8hZCTo=D@z_Bl9s&CJZsF-@bJR)^{Qp< zUtU$DvU5B$B*L~YS+x3nu6r=^L^s=%^rmdP_95DZ%h%d}OQ&bP=o@UQ8T*;a#G2tH zJ^N}M$l2=QHZ+cJM>>}#S|`k-1_isz3CuAq7rjWl93FbSSk}b0s~cCm>oPs)QIA=% z5|q8@Z4=;}?U)p+F17V?QCNua0qihg3F!en@+I;cebiW#^k>$anC>oSM7p9}*d}}e z7dLeO((-2!UKu|+6JL+G%Rg3)nrBO8(;s>Cj`!s;1M5i?e&|tEBZ}Wx`BxZ;^Vh zK>I#M<%$Bd?;&ZBm*;`P0C%EsXk~kibEK55M$$(2UvX%uMQ5^RZPO-%uGfrc#{w{P z207t30K-6#6AA!^WEa5j1%TlJ2u36ThAto{JOnV*06C!=9;@#y$O$O{3?%^!X+SU% z205V}$O%b6FyaI`At?lKcmRsSEszwx0WhQh#i11lM!4V|xHlxSVFjMewq}I~pf(I{ za)aGq0PAgVfID!2I<2Ds4O_>^RGI7b(wsnTskVgViVTxnU4FfI^Mf+ zkAo{`PiTXj5NuF5ZXwtA#RV>z$sDYdU*M6om7R)3XDv!c51^vEE)KQ78dR)#c!Bl( zIs;W5frdikUlajPM=Cd4CGr{b-#g$8-hn2U-jA<#r-8hl5-gdNv9#GbJ_|bii4GKo z9Ip$lnQ`11EIq9}Ss$a12YmTw+wFge`dltOK3n(bD;PSJmuZwkNp|^eihIQ{RfbxL z9^AwUsYay3x8#NllHdpxTKKN|aaAW|BJ^d_ery9Q5LhR-8X*HF6zuJ`ivizj#```5 z{QAQE=}eOnQ}AGbiTemYl$#rv*LTKbKjVx34F(R4Mnse-z_{J@wNF$b7N0(AAU#IN zl^oJra(Nboh6@mmV~I;5zB_J~byLD=RUxoq@eo~_aknByvFcR!FxOynZ8}nZwAmr6 z=A8!DkA%TLOJL|F>-(bhYsv4`99$Y{-OXXt*8E`xvU6V!29HmIQ@L9WtGmB8kKgZj zj7gsm%Rxd(tjIfk9B>6%#H~H&k=M z0%krv!BdE!&!J%l(QtsH)5|)yd0MXzJQqJs)t{dTJI#wdrIjl$QTja2rP0@wuNkU~ zM<$P)@4jSG22kJzP|yodAOKKM04|{@2u6DV1sI6{1%RwJ1sW3hr+tt7019eAF!BK? zcnVO!bzk2PhEb1C!4H1^a-Z$N|CVIjD@H-s30HfzoUmM8gvh4ey0S^MI%v zDoD;xx`q0Kt z(;`pCV3VIN(@A_))Rq~K{wR~!`q&Kzc?`jI!ZCZ4-8}yEOgGd5Jt~q;TfLlaF{udG zOH|TBQsfds9cKJ9Vir`-tr{0%#y@G2jSV4OHZEi-4F;;T1$I>r{x*;rL5U9s2i`b5 z!BUxX%>A=!U)A1S;1A0q`^@rMliA%lwvfobHgbKdv7=U_rRZV2fk`EW5Qrcj)zI?@zf=cqQLjdzRK)jdfe z-QbuHnUV+M@GPXIa#Mi!BFgG?m91?c--2&#ZX4Ee#la~nVL&I|Ng&^_({E!%!i&Gl zxNKC8lSN+e4PqyN9o@*HhPwsHKHq@BW-i;k?7N+4n3up&P4XG152qI?z+`lM7W#pl z!R0Y zb9Malkngo|lQ*PotS;xn&F`-wnH_`@{CMxDJX#I!UgWSiUTXL@KmC2$p#QV3%P(>3 z<%LsmqK|&~-wNwM^tm_XT`DaiHiwVzR`a%a`6X)p&bro)3%@xz85(ttCO8SdS+ZZi*a6OCnbtK$-5|-P3Lj7 zFAO^m4=${E?|;5IUI#xCamHk}DOq@4bIBh4blD|_f#Vv*%QO+O$KcrKh)kOF9=Brt zO40)GJ1?FcP^*)B<6V#9Ic;ETj!t0ETEljcEJ@K?X0@e-$Ae+`fSrRRp~x#HZ3V|< zg%z$P^OTkeh;9lB$iv0JAx|YVpUtF3Qq(<7j2q?T05@mj=0h+dp%@{&k`N5(p9*pb z6n!O-loow>({V<$RzD(-6`cZ9yUdeh69K2y0Gax$kZ)r3H&n5^78Ot4S&-MAZL79; zIM7slIpS!zL9$?Y#oVkf%QmyC53Ng)BlZfyhVar$XcB-;;9`u!52;YIGvLcxMlG&y z$XZuQpDt(KqaiACNq$d>jV08iaXTdhQX?;c)GmK^m7>`X57;*Iwxz%)NuThy5&@5Z z_p&|@<+AOblDK6yu#K<1RuWpn4mi(Hi_>Hct(pA3C$Ioe8&ReWc`Y5J%p1#r54rBz z#PpJQv@voA2i`NCbA*pQ`up^k7?)?v5u|LDy%5#l76%=&>@l|4ni_Lkl8P=MV9|HfHUHIehwq|V8_4&!2lBT*u{`BH;Fc- zJ#UCFO9*ash8*?yI`Z=MAAk6GlKt=yi7Xmi3Vb7|j_8RBAajDhq}&nqjeiMc(0Wdb ziGIOAiLLLXY7u6$?QKa7BVYhrN(8UkxU+o}_t$^|K{E~}$p$nh%Rdh=p(Y4N&N3fIO|=f5l$IZ$DMg$n{#yv9gIg z@O-w;NqaJz3=!Tp<$f{K>u~o&OyYc!B{?k#s&M74Z zh^GKMV@1Kv*mkf%J!97{AWde{@a`QE+V|VHWZsr9`9Rw4s4Qc~CA3$D*Dy7aQCe^z z%yW}TD%l^Dxm+CNZuCpVukO*GINtS*ECVqxLnF2({V?%EQi}8;7cg6nW$eQL#enxF zoa(fdV{!PS1!AIh*rG*8(*OL+fI};Z@WY#wd^Z|n0fy`V7v-qfEuX= z4z`L)zvwH|q)$BZ7ija8{VSxJSB)|N&A5na7ozC-8{zv@d&0wXKDl4R z^IJX|%VhPY8rHIKi?5-p)v&HsC+2)kmM`A34!>)k_9pI)I?@i1;a0_DJ9%u6cSfq_ z^E0O|O)J_=y*qAvEyhb5eD%{LVwacZQ{Wq0unN>@PT!MJDKWJ**Uu{^a%`i@lZY5o zA5Xdi%xgr8v^#Qj%_B(GyduL{f14z=S@zQo|XlG>zp5%{PTmn>v2q9T%L%dH@k23sQwW*>qhPtx2DsC?F?`YTdk&0k*>R776GUEspn2VVrT1h1JRJ>Q}YbUFz1Wahsd%u)W5ziY6WPHe93cit?48n*{6NGXN;R?QcyCrQ*GK6wD-I}> zZnNtq&p`myOGJ?aVee(?!!Okh$dyNDSXj<)COaSVP|>uU=c|_*c`g_Vy51^?Ryf$| zvyO-w4%;C!KmRB7mO$`-4tZTvLC%&SSYPDt)pe%4O6_2uwJqLRywX zV8SBiv5vL7I5h!IWSB5-OOaRov)u#Z2N$+=g3CJOCR-!c!aG7aCLwLsuxB$G%F;j#lQ);jPn;`v9=!^tiO~&o`bT zBo69{B-eVIWX=Q~>f+e0|Bhy%9@uSGeW7{<7;k$L7QaMP#(kd~T2hpm{a^aFanJ>e z6S;j5IX}pRKc~}+jRR_|VW^#pNRebrPn=7*B?6(AQ3t0alSr36dLRU=q)x|tqz*uv zz6_^oIv0{I@Z)e60b2QTCqp-;zj9`2$^FKgolM<7;9B8PJ~f0DRW?Jo-eRc(PGRi2 zS%(Af>kV8Q3H#w#vt;%+;j0DIXWPp>BGbUPc9uGkzO@ zTF{v0^h2WzYcL&N#HjG6zZW|*`CX5q`uxr-wyIcKCMyBNKw-(Yu{h0%>W^~J0Atn{ z-B(8D+NX`cZ1_}&(cJD3>E(F&Uox^b+bnJWn~eTA*XHaeWW!AKK@dKHe6ZKnk+!R< z0R@S|>k<>g^wxp`K|cVmAK4+)yoyM(ou?k}X_F1#-;LBy>Y-hqn zhpS^-h1+57H4^i1BcWM4uRuLuZSJ59>H(q-zzSTau)CLL0X1%(5^|VEF0qXbr6J> z1t;KKskQr_&t__M{J;H5jQbHt{(yvG;zD*uMC<7G8i|mF{f)WYeHrg$c1EX=@hu)6 z;F$L1RmB&s$e zUQGQ!jCH9Lh3Rgu2)7#w`s43@_kpLc}T{F~@NCj1~q>;nptn$KF$H`WGP%Bx=hSJyda ze6UO&^=69xk@%ka6uI}SLzqV9oeaM=)TO#*!=8Z)dXk!x?WhAmE{Uwu%ZYlglOwdRYzM1-RJ(nj>Kb3sSa1GQP_tFM;04DZuqc?M%c*hF=rIXS3>69^dK zE*QfQm@pP_G~>8;m36l0_TET}sX>XvO_=4)iDysrgcX3=f0c>fn8&($@JNerhVtGN zhdz!5#DL8eroO{h@bs++E)RK=z%RJqsZBIB13t~VNh7b@&rKy3l zMNRE2wa^WDc{6_a`shi6sW_P>;h%8+Xh4YzM!F{Z+@s5vip+q`c|fsRYo+;6rT(rl zNi`Y8U>mc*ZxtCox3$+^kKbQ*qq>X*LC6IDmTG>Q^F8ZVK15^(!3|=-&Q%T)`;btW zP;t&yzz1!!1JD13;l#7YIsmlW!s=BMp*9=!*iefY(Hu#Vp1(;5L(l{NWH}fGGtcCD z))qpv*4hs=3B~E(T)-}%vY9)aC{X0v)jCuINNFy0lF2pZ26X0Lqdl2Q?CJRtPQIOs zwe}u5NKJeG^bEl(E{uTh@&ed*ln2i74x4O|fd&W>TWGI0vG6 z`osWTFqwW3bM@w#m1zDb*3MB5^0zd50D7Qqgpn#cJ^z7{fFSZFE+2@m=$Q|UY)wLU zg4@yjHq_q8cpbbN5#j%-_LV%eeyM4BfUPyf9~BhePXDW~FRNl8=j%%g4@;tgKkw8| zPy1p}>_(a^b#8xo;KW)6^gxhJSR0rN&PR%&v&7+Ge>&FAW#Aw+C88cIPPe7&ZlCf2 z*ubW_0gwr$fxr|ko?&}aGwom#$N8Bw68#4gs#9@F>l#FZQ_+QUcuUG(@@Tg=sT&{> zL4@9!kQeW?D<*3JV$#f29P!MsUs@6#pa+DtNqUM2)$t1$y$#qP4}1BqINdP^nXuDp z@=hn{0ZYb+OLRD~t)`8`K*fI;0C4G_NTJI-_a%LQg2iEu=u3U8SANYYi~}U^P#1FQ z(QhTg(zUX^jXYIr&n*@oB?s{hK6-zDM6*=^GI};OWA`kl;Tjqx=mgD=A$wju3_m8(i%&AyiSZXr#K*jBq*m{M&I0-O;XhU=a%zIN0BfRjnp#Y_be1K+9^^(Km-kJv8+RuamyKr zWS_wE+>sEn6Bgw54n(ryWZFkFk&-S-J4Q)JD+i)qNIo7_jv*srLL%rM~$yH_`#uazAZE@*!PCLn|FG~Jp@)0?P zj{aMehK(t%=;lsg>XITnMWov5hKI|8gbGpjzQqOz!;r5<(MBrL_+aR$wa$@46)sR& zK-Mjw7Ha_XQnJw^uPv6Ah0-55-nEl1NHDY5x1R>|e(UaDa1JnilTEu~J%bPM|HxHg z)hly(6fKLZS+#Zkl$xo!B6aP~>u+xq#&rBfgE`sU6Z*YkyEe+qjnImSN;O9+w+PfC-q3^Nx9_mm@|^)dUpe# zWR}o-7QQ3axc;CGrzYY;?i)YBBX}*h#5Im`sB7@d8bC8My~Sd#9`Rh$ZfQyk7|<4| z;0T6lz902U&1o)!I%5qd?MJ(Fbyw0Jx|%Q^CrODb))b zRW{fc=l;dOHr>9IgI*6djU!&$qm`0fm!Us_>uGe~f>g*K{TVWT#MRpuP0}`4aC89W zIjds>2tp{jW1?i3!A_CH`1CBO*%?4)8x1LWIfjyzU`m{ko1w5M?S>v@jY^|FG28R| zCI1D!2z6W|TWdPCK*FGD__=`98>K`_EfH$J%?g@K5BGs;Bsp6D7~<9(0-OK@|XiJg`im z(sV~U#eSV+ge(gN1uB03?5KNsJyC(R{mwxjZJ~OW(3G&lmqb3tB*Sc(Z5f@J26#_L zsQ@%-=qud>ot#+JVPW`ZcGv1~5_^ZfXp*r)e5Sf{j?9LtPf(Of!XN|v4*HV>eXkdJ z171q7$s1@GDX-*8?p={%fzTh)f)Fv{_H{4Wj6&m%}9Z_)v>y` Ql*#{^7aS&ufkCPN0m_sO-v9sr diff --git a/functions.c b/functions.c index 0b1972b..b43621f 100644 --- a/functions.c +++ b/functions.c @@ -266,19 +266,15 @@ void FUNCTION_Select(function_type_t Function) #ifdef ENABLE_MDC1200 if (g_current_vfo->channel.mdc1200_mode == MDC1200_MODE_BOT || g_current_vfo->channel.mdc1200_mode == MDC1200_MODE_BOTH) { - BK4819_WriteRegister(0x30, - (1u << 15) | // enable VCO calibration - (1u << 14) | // enable something or other - (0u << 10) | // diable RX link - (1u << 9) | // enable AF DAC - (1u << 8) | // enable DISC mode, what's DISC mode ? - (15u << 4) | // enable PLL/VCO - (1u << 3) | // enable PA gain - (0u << 2) | // disable MIC ADC - (1u << 1) | // enable TX DSP - (0u << 0)); // disable RX DSP + BK4819_StartTone1(880, 50, false); SYSTEM_DelayMs(120); + BK4819_StopTones(true); + BK4819_send_MDC1200(MDC1200_OP_CODE_PTT_ID, 0x80, g_eeprom.config.setting.mdc1200_id); + + BK4819_StartTone1(880, 50, false); + SYSTEM_DelayMs(120); + BK4819_StopTones(true); } else #endif @@ -288,7 +284,7 @@ void FUNCTION_Select(function_type_t Function) } } /* - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, (1u << 15) | // enable VCO calibration (1u << 14) | // enable something or other (0u << 10) | // diable RX link diff --git a/main.c b/main.c index 2a60440..e36f91a 100644 --- a/main.c +++ b/main.c @@ -216,7 +216,7 @@ void Main(void) #endif #if defined(ENABLE_UART) - UART_printf("BK4819 id %04X rev %04X\r\n", BK4819_ReadRegister(0x00), BK4819_ReadRegister(0x01)); + UART_printf("BK4819 id %04X rev %04X\r\n", BK4819_read_reg(0x00), BK4819_read_reg(0x01)); #ifdef ENABLE_FMRADIO UART_printf("BK1080 id %04X rev %04X\r\n", BK1080_ReadRegister(0x01), BK1080_ReadRegister(0x00)); #endif diff --git a/mdc1200.c b/mdc1200.c index 3246ecd..6f4bfb1 100644 --- a/mdc1200.c +++ b/mdc1200.c @@ -626,8 +626,8 @@ uint8_t mdc1200_rx_ready_tick_500ms; void MDC1200_process_rx(const uint16_t interrupt_bits) { - const uint16_t rx_sync_flags = BK4819_ReadRegister(0x0B); - const uint16_t fsk_reg59 = BK4819_ReadRegister(0x59) & ~((1u << 15) | (1u << 14) | (1u << 12) | (1u << 11)); + const uint16_t rx_sync_flags = BK4819_read_reg(0x0B); + const uint16_t fsk_reg59 = BK4819_read_reg(0x59) & ~((1u << 15) | (1u << 14) | (1u << 12) | (1u << 11)); const bool rx_sync = (interrupt_bits & BK4819_REG_02_FSK_RX_SYNC) ? true : false; const bool rx_sync_neg = (rx_sync_flags & (1u << 7)) ? true : false; @@ -677,17 +677,17 @@ void MDC1200_process_rx(const uint16_t interrupt_bits) if (rx_fifo_almost_full) { unsigned int i; - const unsigned int count = BK4819_ReadRegister(0x5E) & (7u << 0); // almost full threshold + const unsigned int count = BK4819_read_reg(0x5E) & (7u << 0); // almost full threshold #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) - const unsigned int packet_size = 1 + (BK4819_ReadRegister(0x5D) >> 8); + const unsigned int packet_size = 1 + (BK4819_read_reg(0x5D) >> 8); UART_printf("mdc1200 full %2u %2u %2u ", mdc1200_rx_buffer_index, count, packet_size); #endif // fetch received packet data for (i = 0; i < count; i++) { - const uint16_t word = BK4819_ReadRegister(0x5F) ^ (rx_sync_neg ? 0xFFFF : 0x0000); + const uint16_t word = BK4819_read_reg(0x5F) ^ (rx_sync_neg ? 0xFFFF : 0x0000); #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) UART_printf(" %04X", word); @@ -706,8 +706,8 @@ void MDC1200_process_rx(const uint16_t interrupt_bits) if (mdc1200_rx_buffer_index >= sizeof(mdc1200_rx_buffer)) { - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); - BK4819_WriteRegister(0x59, (1u << 12) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 12) | fsk_reg59); #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) { @@ -750,8 +750,8 @@ void MDC1200_process_rx(const uint16_t interrupt_bits) // if (!g_squelch_open) // BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off - BK4819_WriteRegister(0x59, (1u << 15) | (1u << 14) | fsk_reg59); - BK4819_WriteRegister(0x59, (1u << 12) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 15) | (1u << 14) | fsk_reg59); + BK4819_write_reg(0x59, (1u << 12) | fsk_reg59); #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) UART_SendText("mdc1200 fin\r\n"); diff --git a/radio.c b/radio.c index f0e3927..5507579 100644 --- a/radio.c +++ b/radio.c @@ -358,7 +358,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur else { // don't do agc in FM mode BK4819_DisableAGC(); - BK4819_WriteRegister(0x13, (orig_lnas << 8) | (orig_lna << 5) | (orig_mixer << 3) | (orig_pga << 0)); + BK4819_write_reg(0x13, (orig_lnas << 8) | (orig_lna << 5) | (orig_mixer << 3) | (orig_pga << 0)); } #else if (p_vfo->am_mode > 0) @@ -368,7 +368,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur else { // don't do agc in FM mode BK4819_DisableAGC(); - BK4819_WriteRegister(0x13, (orig_lnas << 8) | (orig_lna << 5) | (orig_mixer << 3) | (orig_pga << 0)); + BK4819_write_reg(0x13, (orig_lnas << 8) | (orig_lna << 5) | (orig_mixer << 3) | (orig_pga << 0)); } #endif @@ -402,7 +402,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur BK4819_EnableVox(threshold_enable, threshold_disable); - BK4819_WriteRegister(0x3F, BK4819_ReadRegister(0x3F) | BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST); + BK4819_write_reg(0x3F, BK4819_read_reg(0x3F) | BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST); } #endif @@ -428,6 +428,25 @@ void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *p_vfo) } else { // squelch >= 1 + + // my calibration data + // + // bands 4567 + // 0A 4B 53 56 59 5C 5F 62 64 66 FF FF FF FF FF FF // open rssi + // 05 46 50 53 56 59 5C 5F 62 64 FF FF FF FF FF FF // close rssi + // 5A 2D 29 26 23 20 1D 1A 17 14 FF FF FF FF FF FF // open noise + // 64 30 2D 29 26 23 20 1D 1A 17 FF FF FF FF FF FF // close noise + // 5A 14 11 0E 0B 08 03 02 02 02 FF FF FF FF FF FF // open glitch + // 64 11 0E 0B 08 05 05 04 04 04 FF FF FF FF FF FF // close glitch + // + // bands 123 + // 32 68 6B 6E 6F 72 75 77 79 7B FF FF FF FF FF FF // open rssi + // 28 64 67 6A 6C 6E 71 73 76 78 FF FF FF FF FF FF // close rssi + // 41 32 2D 28 24 21 1E 1A 17 16 FF FF FF FF FF FF // open noise + // 46 37 32 2D 28 25 22 1E 1B 19 FF FF FF FF FF FF // close noise + // 5A 19 0F 0A 09 08 07 06 05 04 FF FF FF FF FF FF // open glitch + // 64 1E 14 0F 0D 0C 0B 0A 09 08 FF FF FF FF FF FF // close glitch + unsigned int band = (unsigned int)FREQUENCY_GetBand(p_vfo->p_rx->frequency); band = (band < BAND4_174MHz) ? 1 : 0; @@ -665,8 +684,8 @@ void RADIO_setup_registers(bool switch_to_function_foreground) break; } - BK4819_WriteRegister(0x30, 0); - BK4819_WriteRegister(0x30, + BK4819_write_reg(0x30, 0); + BK4819_write_reg(0x30, BK4819_REG_30_ENABLE_VCO_CALIB | // BK4819_REG_30_ENABLE_UNKNOWN | BK4819_REG_30_ENABLE_RX_LINK | @@ -685,13 +704,13 @@ void RADIO_setup_registers(bool switch_to_function_foreground) while (1) { // wait for interrupts to clear - const uint16_t int_bits = BK4819_ReadRegister(0x0C); + const uint16_t int_bits = BK4819_read_reg(0x0C); if ((int_bits & (1u << 0)) == 0) break; - BK4819_WriteRegister(0x02, 0); // clear the interrupt bits + BK4819_write_reg(0x02, 0); // clear the interrupt bits SYSTEM_DelayMs(1); } - BK4819_WriteRegister(0x3F, 0); // disable interrupts + BK4819_write_reg(0x3F, 0); // disable interrupts #ifdef ENABLE_NOAA if (IS_NOAA_CHANNEL(g_rx_vfo->channel_save) && g_noaa_mode) @@ -714,11 +733,11 @@ void RADIO_setup_registers(bool switch_to_function_foreground) // AF RX Gain and DAC // if (g_rx_vfo->channel.am_mode > 0) // { -// BK4819_WriteRegister(0x48, 0xB3A8); // 1011 0011 1010 1000 +// BK4819_write_reg(0x48, 0xB3A8); // 1011 0011 1010 1000 // } // else { - BK4819_WriteRegister(0x48, + BK4819_write_reg(0x48, (11u << 12) | // ??? .. 0 ~ 15, doesn't seem to make any difference ( 0u << 10) | // AF Rx Gain-1 (g_eeprom.calib.volume_gain << 4) | // AF Rx Gain-2 @@ -840,7 +859,7 @@ void RADIO_setup_registers(bool switch_to_function_foreground) #endif // enable BK4819 interrupts - BK4819_WriteRegister(0x3F, interrupt_mask); + BK4819_write_reg(0x3F, interrupt_mask); FUNCTION_Init(); @@ -1193,7 +1212,15 @@ void RADIO_tx_eot(void) // if (g_eeprom.config.setting.roger_mode == ROGER_MODE_MDC) if (g_current_vfo->channel.mdc1200_mode == MDC1200_MODE_EOT || g_current_vfo->channel.mdc1200_mode == MDC1200_MODE_BOTH) { +// BK4819_StartTone1(880, 50, false); +// SYSTEM_DelayMs(120); +// BK4819_StopTones(true); + BK4819_send_MDC1200(MDC1200_OP_CODE_POST_ID, 0x00, g_eeprom.config.setting.mdc1200_id); + + BK4819_StartTone1(880, 50, false); + SYSTEM_DelayMs(120); + BK4819_StopTones(true); } else #endif diff --git a/settings.c b/settings.c index d8da3fb..3cf78d9 100644 --- a/settings.c +++ b/settings.c @@ -382,8 +382,8 @@ void SETTINGS_read_eeprom(void) g_eeprom.calib.volume_gain = (g_eeprom.calib.volume_gain < 64) ? g_eeprom.calib.volume_gain : 58; g_eeprom.calib.dac_gain = (g_eeprom.calib.dac_gain < 16) ? g_eeprom.calib.dac_gain : 8; - BK4819_WriteRegister(0x3B, 22656 + g_eeprom.calib.bk4819_xtal_freq_low); -// BK4819_WriteRegister(0x3C, g_eeprom.calib.BK4819_XTAL_FREQ_HIGH); + BK4819_write_reg(0x3B, 22656 + g_eeprom.calib.bk4819_xtal_freq_low); +// BK4819_write_reg(0x3C, g_eeprom.calib.BK4819_XTAL_FREQ_HIGH); // **************************************** }