Skip to content

Commit

Permalink
Merge pull request #190 from ligenxxxx/reset-config-via-short-tx-and-rx
Browse files Browse the repository at this point in the history
reset config via short circuit TX and RX
  • Loading branch information
ligenxxxx authored Mar 1, 2024
2 parents 24cd719 + 636d4a5 commit 9646d62
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 22 deletions.
3 changes: 0 additions & 3 deletions src/camera.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,6 @@ void camera_setting_read(void) {
return;

camera_type_last = camera_reg_read_eep(EEP_ADDR_CAM_TYPE);
#ifdef RESET_CONFIG
camera_type_last = CAMERA_TYPE_UNKNOW;
#endif
if (camera_type_last != camera_type) {
camera_profile_reset();
camera_profile_write();
Expand Down
1 change: 0 additions & 1 deletion src/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@
// #define REV_UART
// #define VIDEO_PAT
// #define FIX_EEP
// #define RESET_CONFIG

#ifndef _RF_CALIB
// #define _DEBUG_MODE
Expand Down
70 changes: 52 additions & 18 deletions src/hardware.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ uint8_t timer_cnt = 0;
uint8_t led_timer_cnt = 0;

void LED_Init();
uint8_t check_uart_loopback();
void reset_config();

void Set_720P50(uint8_t page) {
WriteReg(page, 0x21, 0x25);
Expand Down Expand Up @@ -453,24 +455,7 @@ void GetVtxParameter() {
BAUDRATE = I2C_Read8(ADDR_EEPROM, EEP_ADDR_BAUDRATE);
#endif
CFG_Back();
#ifdef RESET_CONFIG
RF_FREQ = 0;
RF_POWER = 0;
LP_MODE = 0;
PIT_MODE = 0;
OFFSET_25MW = 0;
TEAM_RACE = 0;
BAUDRATE = 0;
SHORTCUT = 0;
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_RF_FREQ, RF_FREQ);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_RF_POWER, RF_POWER);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_LPMODE, LP_MODE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_PITMODE, PIT_MODE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_25MW, OFFSET_25MW);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_TEAM_RACE, TEAM_RACE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_BAUDRATE, BAUDRATE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_SHORTCUT, SHORTCUT);
#endif

#ifdef _DEBUG_MODE
debugf("\r\nUSE EEPROM for VTX setting:RF_FREQ=%d, RF_POWER=%d, LPMODE=%d PIT_MODE=%d", (uint16_t)RF_FREQ, (uint16_t)RF_POWER, (uint16_t)LP_MODE, (uint16_t)PIT_MODE);
#endif
Expand Down Expand Up @@ -549,6 +534,10 @@ void Init_HW() {
#ifdef USE_TC3587_LED
LED_TC3587_Init();
#endif

if (check_uart_loopback())
reset_config();

GetVtxParameter();
Get_EEP_LifeTime();
camera_init();
Expand Down Expand Up @@ -1694,4 +1683,49 @@ void RF_Delay_Init() {
}
DM6300_AUXADC_Calib();
}
}
void reset_config() {
RF_FREQ = 0;
RF_POWER = 0;
LP_MODE = 0;
PIT_MODE = 0;
OFFSET_25MW = 0;
TEAM_RACE = 0;
BAUDRATE = 0;
SHORTCUT = 0;
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_RF_FREQ, RF_FREQ);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_RF_POWER, RF_POWER);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_LPMODE, LP_MODE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_PITMODE, PIT_MODE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_25MW, OFFSET_25MW);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_TEAM_RACE, TEAM_RACE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_BAUDRATE, BAUDRATE);
I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_SHORTCUT, SHORTCUT);

I2C_Write8_Wait(10, ADDR_EEPROM, EEP_ADDR_CAM_TYPE, 0);
}

uint8_t check_uart_loopback() {
uint8_t rdat[4];
uint8_t i = 0;

while (CMS_ready())
rdat[0] = CMS_rx();

CMS_tx(0x11);
CMS_tx(0x22);
CMS_tx(0x33);
CMS_tx(0x44);

while (CMS_ready()) {
rdat[i] = CMS_rx();
_outchar(rdat[i]);
i++;
}

if (i == 4 && rdat[0] == 0x11 && rdat[1] == 0x22 && rdat[2] == 0x33 && rdat[3] == 0x44) {
return 1;
} else {
return 0;
}
}

0 comments on commit 9646d62

Please sign in to comment.