add udid support to the firmware

pull/101/head
Shawn Chain 7 years ago
parent e1ef453979
commit 279251d484

@ -78,6 +78,8 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
const uint8_t PROTOCOL_VERSION = 1U;
char UDID[] = "00000000000000000000000000000000";
CSerialPort::CSerialPort() :
m_buffer(),
m_ptr(0U),
@ -198,7 +200,7 @@ void CSerialPort::getStatus()
void CSerialPort::getVersion()
{
uint8_t reply[100U];
uint8_t reply[132U];
reply[0U] = MMDVM_FRAME_START;
reply[1U] = 0U;
@ -210,6 +212,10 @@ void CSerialPort::getVersion()
for (uint8_t i = 0U; HARDWARE[i] != 0x00U; i++, count++)
reply[count] = HARDWARE[i];
reply[count++] = '\0';
for (uint8_t i = 0U; UDID[i] != 0x00U; i++, count++)
reply[count] = UDID[i];
reply[1U] = count;
writeInt(1U, reply, count);

@ -433,9 +433,33 @@ void WriteUSART2(const uint8_t* data, uint16_t length)
#endif
/////////////////////////////////////////////////////////////////
extern char UDID[];
extern "C" {
#include <stdio.h>
}
void CSerialPort::beginInt(uint8_t n, int speed)
{
#if defined(STM32F4XX)
uint32_t *id0 = (uint32_t *) (0x1FFF7A10);
uint32_t *id1 = (uint32_t *) (0x1FFF7A10 + 0x04);
uint32_t *id2 = (uint32_t *) (0x1FFF7A10 + 0x08);
::sprintf(UDID, "%08X%08X%08X", *id0,*id1,*id2);
#elif defined(STM32F7XX)
uint32_t *id0 = (uint32_t *) (0x1FF0F420);
uint32_t *id1 = (uint32_t *) (0x1FF0F420 + 0x04);
uint32_t *id2 = (uint32_t *) (0x1FF0F420 + 0x08);
::sprintf(UDID, "%08X%08X%08X", *id0,*id1,*id2);
#elif defined(STM32F10X_MD)
uint16_t *id00 = (uint16_t *) (0x1FFFF7E8);
uint16_t *id01 = (uint16_t *) (0x1FFFF7E8 + 0x02);
uint32_t *id1 = (uint32_t *) (0x1FFFF7E8 + 0x04);
uint32_t *id2 = (uint32_t *) (0x1FFFF7E8 + 0x08);
::sprintf(UDID, "%04X%04X%08X%08X", *id00,*id01,*id1,*id2);
#endif
switch (n) {
case 1U:
#if defined(STM32_USART1_HOST)

Loading…
Cancel
Save

Powered by TurnKey Linux.