0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-29 06:41:25 +03:00

update mdc1200

This commit is contained in:
OneOfEleven 2023-10-21 20:54:42 +01:00
parent a68d0ab74f
commit 428ca596e6
6 changed files with 20 additions and 17 deletions

View File

@ -31,7 +31,7 @@ ENABLE_REDUCE_LOW_MID_TX_POWER := 1
# Tx Alarm 0.6 kB # Tx Alarm 0.6 kB
ENABLE_ALARM := 0 ENABLE_ALARM := 0
ENABLE_TX1750 := 0 ENABLE_TX1750 := 0
ENABLE_MDC1200 := 1 ENABLE_MDC1200 := 0
ENABLE_PWRON_PASSWORD := 0 ENABLE_PWRON_PASSWORD := 0
ENABLE_RESET_AES_KEY := 1 ENABLE_RESET_AES_KEY := 1
ENABLE_BIG_FREQ := 0 ENABLE_BIG_FREQ := 0

View File

@ -155,7 +155,9 @@ uint8_t BK4819_GetCTCType(void);
void BK4819_start_fsk_rx(const unsigned int packet_size); void BK4819_start_fsk_rx(const unsigned int packet_size);
void BK4819_PlayRoger(void); void BK4819_PlayRoger(void);
void BK4819_PlayRogerMDC1200(void); #ifdef ENABLE_MDC1200
void BK4819_PlayRogerMDC1200(void);
#endif
void BK4819_Enable_AfDac_DiscMode_TxDsp(void); void BK4819_Enable_AfDac_DiscMode_TxDsp(void);

BIN
firmware.bin Normal file

Binary file not shown.

BIN
firmware.packed.bin Normal file

Binary file not shown.

View File

@ -5,8 +5,11 @@
#include "mdc1200.h" #include "mdc1200.h"
#include "misc.h" #include "misc.h"
/* // MDC1200 sync bit reversals and packet header
uint8_t bitReverse8(uint8_t n) static const uint8_t header[] = {0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x07, 0x09, 0x2a, 0x44, 0x6f};
//static const uint8_t header[] = {0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0x07, 0x09, 0x2a, 0x44, 0x6f};
uint8_t bit_reverse_8(uint8_t n)
{ {
n = ((n >> 1) & 0x55u) | ((n << 1) & 0xAAu); n = ((n >> 1) & 0x55u) | ((n << 1) & 0xAAu);
n = ((n >> 2) & 0x33u) | ((n << 2) & 0xCCu); n = ((n >> 2) & 0x33u) | ((n << 2) & 0xCCu);
@ -14,7 +17,7 @@ uint8_t bitReverse8(uint8_t n)
return n; return n;
} }
uint16_t bitReverse16(uint16_t n) uint16_t bit_reverse_16(uint16_t n)
{ // untested { // untested
n = ((n >> 1) & 0x5555u) | ((n << 1) & 0xAAAAu); n = ((n >> 1) & 0x5555u) | ((n << 1) & 0xAAAAu);
n = ((n >> 2) & 0x3333u) | ((n << 2) & 0xCCCCu); n = ((n >> 2) & 0x3333u) | ((n << 2) & 0xCCCCu);
@ -23,7 +26,7 @@ uint16_t bitReverse16(uint16_t n)
return n; return n;
} }
uint32_t bitReverse32(uint32_t n) uint32_t bit_reverse_32(uint32_t n)
{ {
n = ((n >> 1) & 0x55555555u) | ((n << 1) & 0xAAAAAAAAu); n = ((n >> 1) & 0x55555555u) | ((n << 1) & 0xAAAAAAAAu);
n = ((n >> 2) & 0x33333333u) | ((n << 2) & 0xCCCCCCCCu); n = ((n >> 2) & 0x33333333u) | ((n << 2) & 0xCCCCCCCCu);
@ -32,7 +35,7 @@ uint32_t bitReverse32(uint32_t n)
n = ((n >> 16) & 0x0000FFFFu) | ((n << 16) & 0xFFFF0000u); n = ((n >> 16) & 0x0000FFFFu) | ((n << 16) & 0xFFFF0000u);
return n; return n;
} }
*/
uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits) uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits)
{ {
uint16_t i; uint16_t i;
@ -85,7 +88,7 @@ uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits)
// the cortex CPU might have an instruction to bit reverse for us ? // the cortex CPU might have an instruction to bit reverse for us ?
// //
CRC_DATAIN = reverse_bits(data[i], 8); CRC_DATAIN = reverse_bits(data[i], 8);
//CRC_DATAIN = bitReverse8(data[i]); //CRC_DATAIN = bit_reverse_8(data[i]);
#else #else
uint8_t mask; uint8_t mask;
@ -94,7 +97,7 @@ uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits)
// the cortex CPU might have an instruction to bit reverse for us ? // the cortex CPU might have an instruction to bit reverse for us ?
// //
const uint8_t bits = reverse_bits(data[i], 8); const uint8_t bits = reverse_bits(data[i], 8);
//const uint8_t bits = bitReverse8(*data++); //const uint8_t bits = bit_reverse_8(*data++);
for (mask = 0x0080; mask != 0; mask >>= 1) for (mask = 0x0080; mask != 0; mask >>= 1)
{ {
@ -115,7 +118,7 @@ uint16_t reverse_bits(const uint16_t bits_in, const unsigned int num_bits)
// bit reverse and invert the final CRC // bit reverse and invert the final CRC
return reverse_bits(crc, 16) ^ 0xffff; return reverse_bits(crc, 16) ^ 0xffff;
// return bitReverse16(crc) ^ 0xffff; // return bit_reverse_16(crc) ^ 0xffff;
} }
#endif #endif
@ -169,10 +172,6 @@ uint8_t * encode_data(uint8_t *data)
return data + 14; return data + 14;
} }
// MDC1200 sync bit reversals and packet header
//static const uint8_t header[] = {0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x07, 0x09, 0x2a, 0x44, 0x6f};
static const uint8_t header[] = {0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0x07, 0x09, 0x2a, 0x44, 0x6f};
void delta_modulation(uint8_t *data, const unsigned int size) void delta_modulation(uint8_t *data, const unsigned int size)
{ // xor succesive bits in the entire packet, including the bit reversing pre-amble { // xor succesive bits in the entire packet, including the bit reversing pre-amble
uint8_t b1; uint8_t b1;
@ -198,8 +197,8 @@ void delta_modulation(uint8_t *data, const unsigned int size)
unsigned int MDC1200_encode_single_packet(uint8_t *data, const uint8_t op, const uint8_t arg, const uint16_t unit_id) unsigned int MDC1200_encode_single_packet(uint8_t *data, const uint8_t op, const uint8_t arg, const uint16_t unit_id)
{ {
unsigned int size; unsigned int size;
uint8_t *p = data;
uint16_t crc; uint16_t crc;
uint8_t *p = data;
memcpy(p, header, sizeof(header)); memcpy(p, header, sizeof(header));
p += sizeof(header); p += sizeof(header);
@ -226,8 +225,8 @@ unsigned int MDC1200_encode_single_packet(uint8_t *data, const uint8_t op, const
unsigned int MDC1200_encode_double_packet(uint8_t *data, const uint8_t op, const uint8_t arg, const uint16_t unit_id, const uint8_t b0, const uint8_t b1, const uint8_t b2, const uint8_t b3) unsigned int MDC1200_encode_double_packet(uint8_t *data, const uint8_t op, const uint8_t arg, const uint16_t unit_id, const uint8_t b0, const uint8_t b1, const uint8_t b2, const uint8_t b3)
{ {
unsigned int size; unsigned int size;
uint8_t *p = data;
uint16_t crc; uint16_t crc;
uint8_t *p = data;
memcpy(p, header, sizeof(header)); memcpy(p, header, sizeof(header));
p += sizeof(header); p += sizeof(header);
@ -258,8 +257,8 @@ unsigned int MDC1200_encode_double_packet(uint8_t *data, const uint8_t op, const
delta_modulation(data, size); delta_modulation(data, size);
// return 40;
return size; return size;
// return 40;
} }
/* /*
void test(void) void test(void)

View File

@ -1121,9 +1121,11 @@ void RADIO_tx_eot(void)
if (g_eeprom.roger_mode == ROGER_MODE_ROGER) if (g_eeprom.roger_mode == ROGER_MODE_ROGER)
BK4819_PlayRoger(); BK4819_PlayRoger();
else else
#ifdef ENABLE_MDC1200
if (g_eeprom.roger_mode == ROGER_MODE_MDC) if (g_eeprom.roger_mode == ROGER_MODE_MDC)
BK4819_PlayRogerMDC1200(); BK4819_PlayRogerMDC1200();
else else
#endif
if (g_current_vfo->dtmf_ptt_id_tx_mode == PTT_ID_APOLLO) if (g_current_vfo->dtmf_ptt_id_tx_mode == PTT_ID_APOLLO)
BK4819_PlayTone(APOLLO_TONE2_HZ, APOLLO_TONE_MS, 28); BK4819_PlayTone(APOLLO_TONE2_HZ, APOLLO_TONE_MS, 28);