RTT viewer problem

 Hello,

I am trying to port the 51822 project to 52833.
I am testing the port to 52832 temporarily. The 51822 project is a commercial product. SDK – 17.1.0 SD-S132, PCA10040 is being tested. Of course, I think there are many parts that are set incorrectly, but first, about the part where the log cannot be output through the RTT viewer. I'm trying to make an inquiry. It is confirmed that the output is as an example of the SDK, but the project I am porting is not outputting anything. Even if I compare the <sdk_config.h> file, I don't know where the error is. Can I get some help? I am attaching my fies.

Thanks.
/* Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved.
 *
 * The information contained herein is property of Nordic Semiconductor ASA.
 * Terms and conditions of usage are described in detail in NORDIC
 * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
 *
 * Licensees are granted free, non-transferable use of the information. NO
 * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
 * the file.
 *
 */

/** @file
 *
 * @defgroup ble_sdk_app_hids_mouse_main main.c
 * @{
 * @ingroup ble_sdk_app_hids_mouse
 * @brief HID Mouse Sample Application main file.
 *
 * This file contains is the source code for a sample application using the HID, Battery and Device
 * Information Service for implementing a simple mouse functionality. This application uses the
 * @ref app_scheduler.
 *
 * Also it would accept pairing requests from any peer device. This implementation of the
 * application will not know whether a connected central is a known device or not.
 */


/*******************************************************************************
********************************************************************************
                    include
********************************************************************************
*******************************************************************************/
#include "prj_config.h"
#include "m_global.h"

#include "app_scheduler.h"
#include "app_timer.h"
#include "nrf_delay.h"
#include "nrf_drv_rng.h"
#include "nrf_fstorage.h"
#include "nrf_fstorage_sd.h"
#include "nrf_gpio.h"
#include "nrf_log_ctrl.h"
#ifdef TWI_SW_MASTER_USE
	#include "twi_master.h"
#endif

// SD
#include "nrf_sdh.h"
#include "nrf_sdh_soc.h"
#include "nrf_sdh_ble.h"

// application
#include "appl_ble.h"
#include "codebook.h"
#include "drv_doorlock.h"
#include "imgate_flash.h"
#include "m_doorlock.h"
#include "pstorage_platform.h"
#include "rtc.h"

// common
#include "app_error.h"
#include "nrf_log.h"
#include "nrf_log_ctrl.h"
#include "nrf_log_default_backends.h"



/*******************************************************************************
********************************************************************************
                    definitions
********************************************************************************
*******************************************************************************/
#define VARIABLE_MAC_ADDRESS_BIT_MASK	0x80

#define APP_TIMER_OP_QUEUE_SIZE			40		// old : 25, Size of timer operation queues.

//#define SCHED_MAX_EVENT_DATA_SIZE		MAX(MAX(APP_TIMER_SCHED_EVENT_DATA_SIZE,BLE_STACK_HANDLER_SCHED_EVT_SIZE),sizeof(m_doorlock_data_t))
#define SCHED_MAX_EVENT_DATA_SIZE		MAX(APP_TIMER_SCHED_EVENT_DATA_SIZE, sizeof(m_doorlock_data_t))
#define SCHED_QUEUE_SIZE					45		// old : 30, Maximum number of events in the scheduler queue.


APP_TIMER_DEF(m_system_timer_id);       
#define SYSTEM_INTERVAL						APP_TIMER_TICKS(1000)	// 1 sec

#define RTC_CLOCK_LIMIT						30
#define RTC_DEFAULT_OPTION					1				// old : 0	// 0 : XTAL, 1 - RC, 2- SYNTH


/* Define a nrf_sdh_soc event observer to receive SoftDevice system events. */
//NRF_SDH_SOC_OBSERVER(m_sys_obs, 0, nrf_fstorage_sys_evt_handler, NULL);



/*******************************************************************************
********************************************************************************
                    variables
********************************************************************************
*******************************************************************************/
uint8_t m_main_test_mode = 0;
uint8_t m_nfc_test_TxControlReg = 0;
uint32_t m_nfc_test_sampling_delay = 0;
uint8_t m_nfc_test_mode = 0;					// bit 0 : 0- tx_off /1 -  tx_on , BIT[1] : TX Delay Mode, BIT[2] : No Algorith
uint32_t m_nfc_test_interval = 0;
uint8_t m_log_save_control = 0;
uint8_t m_rtc_option;

uint8_t resetType = 0;							// reset type

volatile uint8_t m_queue_start_index;		// Index of queue entry at the start of the queue
volatile uint8_t m_queue_end_index;			// Index of queue entry at the end of the queue

extern global_t m_global;
extern ram_global_t *mp_ram_global;

extern ble_gap_addr_t m_MAC_Address[2];
extern char DEVICE_NAME[13];
extern uint8_t m_codebook_status[MAX_CODEBOOK_NUM];
extern uint16_t m_treepass_alarm_counter;
extern uint32_t g_curr_sec;
extern volatile doorlock_main_state_t m_main_state;



/*******************************************************************************
********************************************************************************
                    fuctions
********************************************************************************
*******************************************************************************/

#if 0		// mtkim add
// wdt
nrfx_wdt_channel_id m_channel_id;

void configWdt(void)
{
	uint32_t err_code = NRF_SUCCESS;

	nrfx_wdt_config_t config = NRFX_WDT_DEAFULT_CONFIG;
	err_code = nrfx_wdt_init(&config, NULL);
	APP_ERROR_CHECK(err_code);
	err_code = nrfx_wdt_channel_alloc(&m_channel_id);
	APP_ERROR_CHECK(err_code);
	nrfx_wdt_enable();
}
#endif


static void system_timeout_handler(void * p_context)
{
	UNUSED_PARAMETER(p_context);

	g_curr_sec++;

	if (mp_ram_global->nMissingPasswordCount)
	{
		mp_ram_global->nMissingPasswordElaspedSec++;
		CheckMissingPasswordModeTO();
	};

	if (mp_ram_global->nLowVoltageAuthReaminedSecs)
	{
		mp_ram_global->nLowVoltageAuthReaminedSecs--;
	};

	if (m_main_state == S810_TRESPASS)
	{
		m_treepass_alarm_counter++;
//		NRF_LOG_RAW_INFO("TREPASS : %u\r\n", m_treepass_alarm_counter);

		if (m_treepass_alarm_counter == 60*1)
		{
//			NRF_LOG_RAW_INFO("TREPASS STOP\r\n");
			// Alarm Stop
			send_event_to_main_handler(doorlock_packet_type_trepass_alarm_stop_req);
		}
		else if (m_treepass_alarm_counter >= 60*6)
		{
//			NRF_LOG_RAW_INFO("TREPASS START\r\n");
			m_treepass_alarm_counter = 0;
			// Restart Alarm
			send_event_to_main_handler(doorlock_packet_type_trepass_alarm_start_req);
		};
	}

	RTC_CAL_TIMER_INCRESE();
}

/**@brief Function for the Timer initialization.
 *
 * @details Initializes the timer module.
 */
static void timers_init(void)
{
	uint32_t err_code __attribute__((unused));

	// Initialize timer module, making it use the scheduler.
	err_code = app_timer_init();
	DL_APP_ERROR_CHECK(err_code);

	// Create system timer & start
	err_code = app_timer_create(&m_system_timer_id, APP_TIMER_MODE_REPEATED, system_timeout_handler);
	DL_APP_ERROR_CHECK(err_code);

	err_code = app_timer_start(m_system_timer_id, SYSTEM_INTERVAL, NULL);
	DL_APP_ERROR_CHECK(err_code);
}

/**@brief Function for dispatching a system event to interested modules.
 *
 * @details This function is called from the System event interrupt handler after a system
 *          event has been received.
 *
 * @param[in]   sys_evt   System stack event.
 */
void sys_evt_dispatch(uint32_t sys_evt, void * p_context)
{
	UNUSED_PARAMETER(p_context);			// mtkim add

	// Dispatch the system event to the fstorage module, where it will be
	// dispatched to the Flash Data Storage (FDS) module.
////	fs_sys_event_handler(sys_evt);
	nrf_fstorage_sys_evt_handler(sys_evt);

	// Dispatch to the Advertising module last, since it will check if there are any
	// pending flash operations in fstorage. Let fstorage process system events first,
	// so that it can report correctly to the Advertising module.
////	ble_advertising_on_sys_evt(sys_evt);
}


/**@brief Function for initializing the BLE stack.
 *
 * @details Initializes the SoftDevice and the BLE event interrupt.
 */
static void ble_stack_init(uint8_t clock_option)
{
#if 0		// old
    uint32_t err_code __attribute__((unused));

    nrf_clock_lf_cfg_t clock_lf_cfg_xtal = NRF_CLOCK_LFCLKSRC_XTAL;
    nrf_clock_lf_cfg_t clock_lf_cfg_rc = NRF_CLOCK_LFCLKSRC_RC;
    nrf_clock_lf_cfg_t clock_lf_cfg_synth = NRF_CLOCK_LFCLKSRC_SYNTH;

    switch (clock_option)
    {
    case 1:
        SOFTDEVICE_HANDLER_INIT(&clock_lf_cfg_rc, NULL);
//        NRF_LOG_RAW_INFO("2) 32768 Clock RC\r\n");
        break;

    case 2:
        SOFTDEVICE_HANDLER_INIT(&clock_lf_cfg_synth, NULL);
//        NRF_LOG_RAW_INFO("2) 32768 Clock SYNTH\r\n");
        break;

    default:
        SOFTDEVICE_HANDLER_INIT(&clock_lf_cfg_xtal, NULL);
//        NRF_LOG_RAW_INFO("2) 32768 Clock XTAL\r\n");
        break;
    };

    ble_enable_params_t ble_enable_params;
    err_code = softdevice_enable_get_default_config(NRF_SDH_BLE_CENTRAL_LINK_COUNT,
                                                    NRF_SDH_BLE_PERIPHERAL_LINK_COUNT,
                                                    &ble_enable_params);
    DL_APP_ERROR_CHECK(err_code);

    // Check the ram settings against the used number of links
    CHECK_RAM_START_ADDR(NRF_SDH_BLE_CENTRAL_LINK_COUNT, NRF_SDH_BLE_PERIPHERAL_LINK_COUNT);

    // Enable BLE stack.
#if (NRF_SD_BLE_API_VERSION == 3)
    ble_enable_params.gatt_enable_params.att_mtu = NRF_BLE_MAX_MTU_SIZE;
#endif
    err_code = softdevice_enable(&ble_enable_params);
    DL_APP_ERROR_CHECK(err_code);

    // Register with the SoftDevice handler module for BLE events.
    err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch);
    DL_APP_ERROR_CHECK(err_code);

    // Register with the SoftDevice handler module for system events.
    err_code = softdevice_sys_evt_handler_set(sys_evt_dispatch);
    DL_APP_ERROR_CHECK(err_code);

#define VARIABLE_MAC_ADDRESS_BIT_MASK 0x80
    sd_ble_gap_address_get(&m_MAC_Address[0]);
    sd_ble_gap_address_get(&m_MAC_Address[1]);
    if(m_MAC_Address[1].addr[4] & VARIABLE_MAC_ADDRESS_BIT_MASK) 
        m_MAC_Address[1].addr[4] &= ~VARIABLE_MAC_ADDRESS_BIT_MASK;
    else
        m_MAC_Address[1].addr[4] |= VARIABLE_MAC_ADDRESS_BIT_MASK;

#else
	uint32_t err_code __attribute__((unused));
	uint32_t ram_start = 0;

	// boot address set
//	NRF_LOG_DEBUG("Setting up vector table: 0x%08x", BOOTLOADER_START_ADDR);
//	err_code = sd_softdevice_vector_table_base_set(BOOTLOADER_START_ADDR);
//	DL_APP_ERROR_CHECK(err_code);

	// clock set in sdk_config.h -> inner RC use
	err_code = nrf_sdh_enable_request();
	DL_APP_ERROR_CHECK(err_code);

	// configure the BLE stack using the default settings.
	// Fetch the start address of the application RAM.
	err_code = nrf_sdh_ble_default_cfg_set(APP_BLE_CONN_CFG_TAG, &ram_start);
	DL_APP_ERROR_CHECK(err_code);

	// Enable BLE stack
	err_code = nrf_sdh_ble_enable(&ram_start);
	DL_APP_ERROR_CHECK(err_code);

	// register a handler for BLE events.
	NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_dispatch, NULL);
	NRF_SDH_SOC_OBSERVER(m_soc_observer, APP_SOC_OBSERVER_PRIO, sys_evt_dispatch, NULL);	// no need ??


	// MAC address set
	sd_ble_gap_addr_get(&m_MAC_Address[0]);
	sd_ble_gap_addr_get(&m_MAC_Address[1]);

	if(m_MAC_Address[1].addr[4] & VARIABLE_MAC_ADDRESS_BIT_MASK) 
		m_MAC_Address[1].addr[4] &= ~VARIABLE_MAC_ADDRESS_BIT_MASK;
	else
		m_MAC_Address[1].addr[4] |= VARIABLE_MAC_ADDRESS_BIT_MASK;
#endif
}


/**@brief Function for the Event Scheduler initialization.
 */
static void scheduler_init(void)
{
    APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, SCHED_QUEUE_SIZE);
}

/**@brief Function for the Power manager.
 */
static void power_manage(void)
{
#ifdef SOFTDEVICE_PRESENT			// 1
	uint32_t err_code = sd_app_evt_wait();
	DL_APP_ERROR_CHECK(err_code);
#else
	__WFE();
//	__SEV();
//	__WFE();
#endif
}

static void io_default_setting(void)
{
#if(HW_REV==1)

    uint8_t default_out_low_pin[] = {IO_NFC_NRSTPD_PIN, 
                                     IO_SPI_MOSI,IO_SPI_MISO,IO_SPI_SCK,IO_NFC_NSS};
    uint8_t default_out_high_pin[] = {IO_KEY_I2C_EN_PIN, IO_COMM_NSS,
                                     IO_LED_N1,IO_LED_N2,IO_LED_N3,IO_LED_N4,IO_LED_N5,IO_LED_N6,IO_LED_N7,IO_LED_N8,IO_LED_N9,IO_LED_N0,IO_LED_STAR,IO_LED_SHARP};
    uint8_t default_input[] = {IO_NFC_SENSE_PIN, IO_NFC_IRQ_PIN, IO_KEY_IRQ_PIN, IO_MASTER_RX};

#elif (HW_REV==2)||(HW_REV==5)

    uint8_t default_out_low_pin[] = {IO_NFC_NRSTPD_PIN, IO_SENSE_EN, IO_MOT_F, IO_MOT_R,
                                     IO_SPI_MOSI,IO_SPI_MISO,IO_SPI_SCK,IO_NFC_NSS};
    uint8_t default_out_high_pin[] = {IO_LED_N9, IO_LED_N10, IO_LED_N11, IO_LED_N12, IO_LED_N13, IO_KEYPAD_EN};
    uint8_t default_input[] = {IO_SW_1,IO_SW_2, IO_TACT_SW_PIN};

#elif(HW_REV==3)||(HW_REV==4)||(HW_REV==6)

    uint8_t default_out_low_pin[] = {IO_NFC_NRSTPD_PIN, IO_LED_FUNCTION,
                                     IO_SPI_MOSI,IO_SPI_MISO,IO_SPI_SCK,IO_NFC_NSS};
    uint8_t default_out_high_pin[] = {IO_COMM_NSS, IO_LED_N9, IO_LED_N10, IO_LED_N11, IO_LED_N12, IO_LED_BATT, IO_KEYPAD_EN};
    uint8_t default_input[] = {IO_NFC_SENSE_PIN, IO_NFC_IRQ_PIN, IO_KEY_IRQ_PIN};

#elif (HW_REV==7)

    uint8_t default_out_low_pin[] = {IO_NFC_NRSTPD_PIN, IO_SENSE_EN, IO_MOT_F, IO_MOT_R,
                                     IO_SPI_MOSI,IO_SPI_MISO,IO_SPI_SCK,IO_NFC_NSS};
    uint8_t default_out_high_pin[] = {IO_LED_N9, IO_LED_N10, IO_LED_N11, IO_LED_N12, IO_LED_N13, IO_KEYPAD_EN};
    uint8_t default_input[] = {IO_SW_1,IO_SW_2, IO_TACT_SW_PIN};

#elif (HW_REV==8)

    uint8_t default_out_low_pin[] = {IO_NFC_NRSTPD_PIN,
                                     IO_SPI_MOSI,IO_SPI_MISO,IO_SPI_SCK,IO_NFC_NSS};
    uint8_t default_out_high_pin[] = {IO_LED_N9, IO_LED_N10, IO_LED_N11, IO_LED_N12, IO_KEYPAD_EN};
    uint8_t default_input[] = {32};

#else
  #error "HW_REV NOT DEFINED!!"
#endif
    if(sizeof(default_out_low_pin))
    {
        for(uint8_t i=0; i<sizeof(default_out_low_pin); i++)
        {
            nrf_gpio_cfg_output(default_out_low_pin[i]);
            nrf_gpio_pin_clear(default_out_low_pin[i]);
        };
    };

    if(sizeof(default_out_high_pin))
    {
        for(uint8_t i=0; i<sizeof(default_out_high_pin); i++)
        {
            nrf_gpio_cfg_output(default_out_high_pin[i]);
            nrf_gpio_pin_set(default_out_high_pin[i]);
        };
    };

    if(sizeof(default_input))
    {
        for(uint8_t i=0; i<sizeof(default_input); i++)
        {
            nrf_gpio_cfg_default(default_input[i]);
        };
    };


	// extra IO setting - mtkim add
#ifdef LOW_CURRENT_P0RT_SET
#if (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8000) || (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8007)
	// all output high
	if(mp_ram_global->dfu_progress == 0)
	{
		// disconnect when CTL DFU
		nrf_gpio_cfg_output(IO_PIN_30);
		nrf_gpio_pin_set(IO_PIN_30);
	}

	nrf_gpio_cfg_output(IO_PIN_7);
	nrf_gpio_pin_set(IO_PIN_7);
#if (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8007)
	nrf_gpio_cfg_output(IO_PIN_12);
	nrf_gpio_pin_set(IO_PIN_12);
#endif
	nrf_gpio_cfg_output(IO_PIN_16);
	nrf_gpio_pin_set(IO_PIN_16);
	nrf_gpio_cfg_output(IO_PIN_19);
	nrf_gpio_pin_set(IO_PIN_19);
	nrf_gpio_cfg_output(IO_PIN_20);
	nrf_gpio_pin_set(IO_PIN_20);
	nrf_gpio_cfg_output(IO_PIN_25);
	nrf_gpio_pin_set(IO_PIN_25);
#endif
#endif


#if (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8008)
	nrf_gpio_cfg_output(13);			// door open LED
	nrf_gpio_pin_set(13);
	nrf_gpio_cfg_output(16);			// nfc LED
	nrf_gpio_pin_set(16);
	nrf_gpio_cfg_output(19);
	nrf_gpio_pin_set(IO_PIN_19);

#elif (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8030)
	nrf_gpio_input_disconnect(0);
	nrf_gpio_input_disconnect(21);
	nrf_gpio_input_disconnect(24);
	nrf_gpio_input_disconnect(26);

	nrf_gpio_input_disconnect(15);
	nrf_gpio_input_disconnect(16);
#endif
}

void INPUT_PIN_CHECK(uint32_t pin)
{
#if (HW_REV==2)||(HW_REV==5)
    uint32_t prev_pin_state = 0;
    uint32_t current_pin_state = 0;

    nrf_gpio_cfg_output(IO_KEYPAD_EN);
    nrf_gpio_pin_set(IO_KEYPAD_EN);
    
    nrf_delay_ms(100);

    prev_pin_state = nrf_gpio_pin_read(pin);
//    NRF_LOG_RAW_INFO("PIN(%d), STATE(%d)\r\n", pin, prev_pin_state);
    while(1) {
//        NRF_LOG_RAW_INFOESS();
        current_pin_state = nrf_gpio_pin_read(pin);
        if(prev_pin_state!= current_pin_state) {
//            NRF_LOG_RAW_INFO("PIN(%d), STATE(%d)\r\n", pin, current_pin_state);
            prev_pin_state = current_pin_state;
        }
    }
#endif
}

void INPUT_PIN_CHECK2(void)
{
#if (HW_REV==2)||(HW_REV==5)

    uint32_t prev_pin_state = 0;
    uint32_t current_pin_state = NRF_GPIO->IN;

    nrf_gpio_cfg_output(IO_KEYPAD_EN);
    nrf_gpio_pin_set(IO_KEYPAD_EN);
    
    nrf_gpio_cfg_input(IO_SW_1, NRF_GPIO_PIN_PULLUP);
    nrf_gpio_cfg_input(IO_SW_2, NRF_GPIO_PIN_PULLUP);
    nrf_gpio_cfg_input(IO_SW_3, NRF_GPIO_PIN_PULLUP);
    nrf_gpio_cfg_input(IO_KEY_IRQ_PIN, NRF_GPIO_PIN_NOPULL);

    nrf_gpio_pin_set(IO_MOT_F);
    nrf_delay_ms(2000);
    nrf_gpio_pin_clear(IO_MOT_F);
    nrf_gpio_pin_set(IO_MOT_R);
    nrf_delay_ms(2000);
    nrf_gpio_pin_clear(IO_MOT_R);

    prev_pin_state = NRF_GPIO->IN;
//    NRF_LOG_RAW_INFO("STATE(0x%08X)\r\n", prev_pin_state);
    while(1) {
//        NRF_LOG_RAW_INFOESS();
        current_pin_state = NRF_GPIO->IN;
        if(prev_pin_state!= current_pin_state) 
        {
//            NRF_LOG_RAW_INFO("STATE(0x%08X)\r\n", current_pin_state);
            prev_pin_state = current_pin_state;
            nrf_delay_ms(100);
        }
    }
#endif
}

void watchdog_init()
{
#if 0
    // Using the watchdog to do a hard reset    
    NRF_WDT->CONFIG = (WDT_CONFIG_SLEEP_Run << WDT_CONFIG_SLEEP_Pos);
    NRF_WDT->CRV = 32768 * (10+1);// 11sec (battery timer expire every 10 secs)
    NRF_WDT->RREN = WDT_RREN_RR0_Enabled << WDT_RREN_RR0_Pos;
    NRF_WDT->TASKS_START = 1;
#ifdef DEBUG_PRINT
    NRF_LOG_RAW_INFO("\t %s()\r\n", M_FUNCTION);
#endif

#else		// mtkim
 	// watchdog only during wakeup -> watchdog always run
//	NRF_WDT->CONFIG = (WDT_CONFIG_SLEEP_Pause << WDT_CONFIG_SLEEP_Pos);
	NRF_WDT->CONFIG = (WDT_CONFIG_SLEEP_Run << WDT_CONFIG_SLEEP_Pos) | (WDT_CONFIG_HALT_Run << WDT_CONFIG_HALT_Pos);

	NRF_WDT->CRV = 32768 * 5;							// 5sec
	NRF_WDT->RREN = WDT_RREN_RR0_Enabled << WDT_RREN_RR0_Pos;
	NRF_WDT->TASKS_START = 1;
#endif
}

void watchdog_reset(void)
{
    // Using the watchdog to do a hard reset    
    NRF_WDT->RR[0] = WDT_RR_RR_Reload;  //Reload watchdog register 0
}

uint32_t CheckRTC(void)
{
    uint32_t tries = 1000;
    uint32_t count = 0;
    uint32_t previous, current;
    nrf_gpio_cfg_input(IO_CKOUT, NRF_GPIO_PIN_NOPULL);

    previous = nrf_gpio_pin_read(IO_CKOUT);

    while (tries--)
    {
        current = nrf_gpio_pin_read(IO_CKOUT);
        if (previous != current)
        {
            count++;
            previous  = current;
        };
    };

#ifdef _MSG_RTC
    NRF_LOG_RAW_INFO("RTC clock out count : %d\r\n", count);
#endif

    return count;
}

#if 0
void ErrorNoti(void)
{
// 2 BD type available
#if (HW_REV==3)||(HW_REV==4)||(HW_REV==6)
	uint8_t count=2;

	while(count--)
	{
		// 1
		nrf_delay_ms(100);
		nrf_gpio_pin_clear(IO_LED_N12);
		nrf_delay_ms(100);
		nrf_gpio_pin_set(IO_LED_N12);

		// 4
		nrf_delay_ms(100);
		nrf_gpio_pin_clear(IO_LED_N11);
		nrf_delay_ms(100);
		nrf_gpio_pin_set(IO_LED_N11);

		// 7
		nrf_delay_ms(100);
		nrf_gpio_pin_clear(IO_LED_N10);
		nrf_delay_ms(100);
		nrf_gpio_pin_set(IO_LED_N10);

		// *
		nrf_delay_ms(100);
		nrf_gpio_pin_clear(IO_LED_N9);
		nrf_delay_ms(100);
		nrf_gpio_pin_set(IO_LED_N9);
	}
#endif
}

#else
#if (DOORLOCK_TYPE==DOORLOCK_TYPE_IG8030)
	// 1, 4 display
	const uint8_t LED_PORT[] = {IO_LED_N9, IO_LED_N13};
#elif (HW_REV==1)
	// 1, 2 display : IG5000
	const uint8_t LED_PORT[] = {IO_LED_N1, IO_LED_N2};
#elif (HW_REV==2)||(HW_REV==5)||(HW_REV==7)
	// 1, 2 display : IG7020 / IG7000 / IG7001 / IG7040
	const uint8_t LED_PORT[] = {IO_LED_N11, IO_LED_N10};
#elif (HW_REV==3)||(HW_REV==4)||(HW_REV==6)
	// 1, 4 display : IG6000 / IG8000 / IG8807 / IG8008 / IG 5001
	const uint8_t LED_PORT[] = {IO_LED_N12, IO_LED_N11};
#elif (HW_REV==8)
	// 0, 9 display : IG7030
	const uint8_t LED_PORT[] = {IO_LED_N11, IO_LED_N9};
#else
	#define HW_NOTI_NOT_DEFINED
#endif

void ErrorNoti(uint8_t level)
{
	#ifndef HW_NOTI_NOT_DEFINED
		uint8_t count = 3;

		while(count--)
		{
			nrf_gpio_pin_set(LED_PORT[level]);
			nrf_delay_ms(200);
			nrf_gpio_pin_clear(LED_PORT[level]);
			nrf_delay_ms(200);
		}
	#else
		NRF_LOG_RAW_INFO("no HW init error notification : HW type not defined !!!\r\n");
	#endif
}
#endif



// reset reason
#define RESET_POWER						0x01			// power on reset
#define RESET_DOG							0x02			// watchdog reset
#define RESET_SREQ						0x04			// soft reset
#define RESET_LOCKUP						0x08			// cpu lockup reset
#define RESET_OFF							0x10			// gpio reset when system off mode
#define RESET_LPCOMP						0x20			// lpcomp reset when system off mode
#define RESET_DIF							0x40			// degub interface reset when system off mode
#define RESET_NFC							0x80			// not available in nrf51


/*
Note: Unless cleared, the RESETREAS register will be cumulative. A field is cleared by writing '1' to it. If none of the reset sources are flagged, this indicates
that the chip was reset from the on-chip reset generator, which will indicate a power-on-reset or a brown out reset.
*/
static void resetCheck(void)
{
#ifdef MSG_DEVICE_INFO
	NRF_LOG_RAW_INFO("\r\n");
	NRF_LOG_RAW_INFO("\r\n");
#endif

	if(NRF_POWER->RESETREAS & POWER_RESETREAS_RESETPIN_Msk)
	{
		resetType |= RESET_POWER;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_RESETPIN_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_POWER ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_DOG_Msk)
	{
		resetType |= RESET_DOG;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_DOG_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_DOG ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_SREQ_Msk)
	{
		resetType |= RESET_SREQ;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_SREQ_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_SREQ ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_LOCKUP_Msk)
	{
		resetType |= RESET_LOCKUP;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_LOCKUP_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_LOCKUP ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_OFF_Msk)
	{
		resetType |= RESET_OFF;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_OFF_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_OFF ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_LPCOMP_Msk)
	{
		resetType |= RESET_LPCOMP;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_LPCOMP_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_LPCOMP ***\r\n");
#endif
	}
	if(NRF_POWER->RESETREAS & POWER_RESETREAS_DIF_Msk)
	{
		resetType |= RESET_DIF;
		NRF_POWER->RESETREAS |= POWER_RESETREAS_DIF_Msk;
#ifdef MSG_DEVICE_INFO
		NRF_LOG_RAW_INFO("*** reset : RESET_DIF ***\r\n");
#endif
	}
}



#ifdef MSG_DEVICE_INFO
void displayDeviceInfo1(void)
{
//	NRF_LOG_INIT(NULL);
	NRF_LOG_RAW_INFO("*** system start ***\r\n"); 
#ifdef FEATURE_MULTI_FAMILY
	NRF_LOG_RAW_INFO("* target : %s-MF\r\n", (uint32_t)DOOR_LOCK_DEST);	 
#else
	NRF_LOG_RAW_INFO("* target : %s-HOME\r\n", (uint32_t)DOOR_LOCK_DEST);	 
#endif
	NRF_LOG_RAW_INFO("* doorlock type : %d\r\n", DOORLOCK_TYPE);
	NRF_LOG_RAW_INFO("* HW version : %d\r\n", HW_REV);
	NRF_LOG_RAW_INFO("* FW version : %d.%02d\r\n", FW_MAJOR, FW_MINOR);
	NRF_LOG_RAW_INFO("* build date : %s %s\r\n", (uint32_t)__DATE__, (uint32_t)__TIME__);
	NRF_LOG_FLUSH();
	NRF_LOG_RAW_INFO("* ram - global paramter addr : 0x%08X, size : 0x%04X\r\n", RAM_GLOBAL_ADDRESS, sizeof(ram_global_t));
	NRF_LOG_RAW_INFO("* flash - global paramter addr : 0x%08X, size : 0x%04X\r\n", FLASH_GLOBAL1_ADDR, sizeof(global_t));
	NRF_LOG_RAW_INFO("* flash - cbook header addr : 0x%08X\r\n", FLASH_CBOOK_HEAD_ADDR);
	NRF_LOG_RAW_INFO("* flash - cbook addr : 0x%08X\r\n", FLASH_CBOOK_ADDR);
#ifdef DUAL_FLASH_USE
	NRF_LOG_RAW_INFO("* flash - global paramter backup addr : 0x%08X\r\n", FLASH_GLOBAL1_BACKUP_ADDR);
#endif
	NRF_LOG_RAW_INFO("* flash - log addr : 0x%08X, cnt : %d\r\n", FLASH_LOG_ADDR, MAX_LOGS);
	NRF_LOG_RAW_INFO("* flash - bootloader addr : 0x%08X\r\n", BOOTLOADER_ADDRESS);
	NRF_LOG_FLUSH();

#ifdef RTC_BACKUP_USE
	NRF_LOG_RAW_INFO("* backup time : %04u.%02u.%02u %02u:%02u:%02u\r\n",			\
							mp_ram_global->rtcBackupTime.year, mp_ram_global->rtcBackupTime.month, mp_ram_global->rtcBackupTime.day,		\
							mp_ram_global->rtcBackupTime.hours, mp_ram_global->rtcBackupTime.minutes, mp_ram_global->rtcBackupTime.seconds);
#endif
}

void displayDeviceInfo2(void)
{
	uint32_t err_code __attribute__((unused));
	bool IsReset;
	ble_date_time_t bdt;

	err_code = drv_rtc_date_time_read(&bdt, &IsReset);
	NRF_LOG_RAW_INFO("* RTC time    : %04u.%02u.%02u %02u:%02u:%02u\r\n",			\
							bdt.year, bdt.month, bdt.day, bdt.hours, bdt.minutes, bdt.seconds);

	print_mac_addr(m_MAC_Address[0]);
	print_mac_addr(m_MAC_Address[1]);
	NRF_LOG_RAW_INFO("* device name : %s\r\n", (uint32_t)DEVICE_NAME);
	NRF_LOG_RAW_INFO("\r\n");
#ifdef OP_MODE_CHANGE_SUPPORT
	uint8_t *puicr = (uint8_t *)(DEVICE_ID_STORAGE_ADDR + 0x10);
	NRF_LOG_RAW_INFO("* mode change use : %d\r\n", puicr[22]);
#endif
}

void displayDeviceInfo3(void)
{
#ifdef OTP_V3_USE
	NRF_LOG_RAW_INFO("* pincode V3 use : %d\r\n", m_global.dotp_seq_v3_enable);
#endif
#ifdef FEATURE_DOOR_STATE_SENSOR
	NRF_LOG_RAW_INFO("* trepass use : %d\r\n", m_global.trepassUse);
#endif
#ifdef PERMANENT_PIN_USE
	NRF_LOG_RAW_INFO("* permanent Pin use : %d\r\n", m_global.permanentPinUse);
#endif
}
#endif


#ifdef FEATURE_TEST_MODE
void setTestMode(void)
{
	uint8_t * pParam = (uint8_t*)DEVICE_ID_STORAGE_ADDR+0x10;
	m_main_test_mode = pParam[20];
//		NRF_LOG_RAW_INFO("Test Mode Param : 0x%X\r\n", m_main_test_mode);
}
#endif


void setUserArea(void)
{
	uint8_t * pParam = (uint8_t*)DEVICE_ID_STORAGE_ADDR+0x10;

	m_nfc_test_mode = pParam[24];
	m_nfc_test_TxControlReg = (pParam[25] == 0xFF) ? NFC_TX_CONTROL_VALUE : pParam[25];
//		NRF_LOG_RAW_INFO("Nfc Test Mode : 0x%02x, Tx Control Reg: 0x%02x\r\n", m_nfc_test_mode, m_nfc_test_TxControlReg);

	m_nfc_test_interval = (pParam[26] == 0xFF) ? NFC_POLLING_INTERVAL_MS : (pParam[26]*10);
	m_nfc_test_sampling_delay = (pParam[27] == 0xFF) ? 0 : pParam[27]*10;
//		NRF_LOG_RAW_INFO("m_nfc_test_interval : %u (msec), m_nfc_test_sampling_delay : %u (usec)\r\n", m_nfc_test_interval, m_nfc_test_sampling_delay);

	m_log_save_control = (pParam[18] == 0xFF) ? 0 : pParam[18];
//		NRF_LOG_RAW_INFO("m_log_save_control : 0x%02X\r\n", m_log_save_control);

	m_rtc_option = (pParam[21] == 0xFF) ? RTC_DEFAULT_OPTION : pParam[21];
//		NRF_LOG_RAW_INFO("m_rtc_option : 0x%02X\r\n", m_rtc_option);
}


#ifdef FEATURE_PRODUCTION_LOCK
void setProductionLock(void)
{
	// Check if read-back mechanism is turned ON.
	if((uint32_t)((NRF_UICR->RBPCONF & UICR_RBPCONF_PALL_Msk) >> UICR_RBPCONF_PALL_Pos) != UICR_RBPCONF_PALL_Enabled)
	{
		NRF_NVMC->CONFIG=1;
		NRF_UICR->RBPCONF=0;
#ifdef DEBUG_PRINT
		NRF_LOG_RAW_INFO("NRF LOCKING\r\n");
#endif
	}
	else
	{
#ifdef DEBUG_PRINT
		NRF_LOG_RAW_INFO("NRF LOCKED\r\n");
#endif
	}
}
#endif

void selectRtcSrc(void)
{
#ifdef MSG_RTC
	NRF_LOG_RAW_INFO("@%s-1 option : %d\r\n", M_FUNCTION, m_rtc_option);
#endif
	switch (m_rtc_option)
	{
		case 1:							// RC
		case 2:							// SYNC
			initRTC(false);
		break;

		default:							// XTAL
			if(CheckRTC() < RTC_CLOCK_LIMIT)
			{
//				ble_stack_init_post();
				m_rtc_option = 2;
				initRTC(false);
			}
		break;
	}

#ifdef MSG_RTC
	NRF_LOG_RAW_INFO("@%s-2 RTC clock count : %d, option : %d\r\n", M_FUNCTION, CheckRTC(), m_rtc_option);
#endif
}



static uint8_t app_sched_queue_empty2(void)
{
	uint8_t temp = m_queue_start_index;

	return m_queue_end_index == temp;
}


static void initLedOn(void) __attribute__((unused));
static void initLedOn(void)
{
#if (DOORLOCK_TYPE == DOORLOCK_TYPE_IG8008)
	nrf_gpio_cfg_output(19);					// dual close
	nrf_gpio_pin_clear(19);
	nrf_gpio_cfg_output(29);					// low battery		
	nrf_gpio_pin_clear(29);
	nrf_gpio_cfg_output(16);					// nfc
	nrf_gpio_pin_clear(16);
	nrf_gpio_cfg_output(13);					// door open
	nrf_gpio_pin_clear(13);
#endif
}


/**@brief Function for application main entry.
 */
int main(void)
{
#if 0
	uint32_t err_code __attribute__((unused));
	bool bhwErrorOccurred __attribute__((unused)) = false;

	nrf_delay_ms(200);						// stability delay : old-500mS
	NRF_LOG_INIT(NULL);
	resetCheck();								// reset reason check : mtkim add

#ifdef MSG_DEVICE_INFO
	displayDeviceInfo1();					// device info output
#endif

#ifdef FEATURE_TEST_MODE
	setTestMode();
#endif

	setUserArea();

#ifdef FEATURE_PRODUCTION_LOCK
	setProductionLock();
#endif

	io_default_setting();
//	INPUT_PIN_CHECK2();
	RAM_Global_Init();

	initFlash();




#ifndef TWI_SW_MASTER_USE
	twi_config();
#else
	/*
	* @return
	 * @retval true TWI bus is clear for transfers.
	 * @retval false TWI bus is stuck.	--> ???
	 */
//	if(!twi_master_init())		// why not ???
	if(twi_master_init())
	{
		#ifdef HALT_ON_I2C_FAILURE
			NRF_LOG_RAW_INFO("I2C init fail !!!\r\n");
			bhwErrorOccurred = true;
			ErrorNoti(0);
		#endif
	}
#endif

#ifndef INTERNAL_RTC_USE
	initRTC(true);
	if(CheckRTC() < RTC_CLOCK_LIMIT)
	{
		#ifdef HALT_ON_RTC_FAILURE
			NRF_LOG_RAW_INFO("RTC init fail !!!\r\n");
			bhwErrorOccurred = true;
			ErrorNoti(1);
		#endif
	}
#else
	m_rtc_option = 1;			// internal RC use
#endif


#if 0	// defined(HALT_ON_I2C_FAILURE) || defined(HALT_ON_RTC_FAILURE)
	if(bhwErrorOccurred)
	{
		NRF_LOG_RAW_INFO("SYSTEM HALT for HW init error !!!\r\n");
		for(;;);
	}
#endif


	// RTC SET
	selectRtcSrc();
	ble_stack_init(m_rtc_option);
	timers_init();
	radio_notification_init();
	device_name_init();

#ifdef RTC_BACKUP_USE
    rtc_timer_init();
#endif

#ifdef MSG_DEVICE_INFO
	displayDeviceInfo2();
#endif

	scheduler_init();

	nrf_drv_rng_init(NULL);

	gap_params_init(false);
////	advertising_init();
	services_init();
	conn_params_init();

	// 2019-01-23 (yeyun) Soft Reset �� ���� Clear �Ѵ�.
	if(IsSoftReset())
	{
		ClearSoftResetFlag();
	}

#ifdef FEATURE_CRYSTAL_TEST
    sd_clock_hfclk_request();
#endif

#ifdef DEBUG_PRINT_GLOBAL
    NRF_LOG_RAW_INFO("\t\t CODEBOOK(%d) - ", get_active_codebook_count());
    dump_8_array(NULL, m_codebook_status, MAX_CODEBOOK_NUM);
#endif


// test
#ifdef SCAN_TEST_USE
	while(1)
	{
//		scanSensitivity();
		scanRawData();
		nrf_delay_ms(50);

	}
#endif

	m_doorlock_init();

#ifdef MSG_DEVICE_INFO
	displayDeviceInfo3();
	NRF_LOG_RAW_INFO("\r\n");
#endif


#ifndef FEATURE_CRYSTAL_TEST
#ifdef WATCHDOG_ENABLE
	watchdog_init();
	watchdog_reset();
#endif
#endif


	// Enter main loop.
	for(;;)
	{
		app_sched_execute();

#ifdef DOORLOCK_RELEASE
		if(app_sched_queue_empty2())
#else
		if(app_sched_queue_empty2() && (NRF_LOG_PROCESS() == false))
#endif
		{
			power_manage();
#ifdef WATCHDOG_ENABLE
			watchdog_reset();
#endif
		}
	}





#else
	uint32_t err_code __attribute__((unused));
	bool bhwErrorOccurred __attribute__((unused)) = false;

	nrf_delay_ms(200);						// stability delay : old-500mS
	err_code = NRF_LOG_INIT(NULL);
	DL_APP_ERROR_CHECK(err_code);
	NRF_LOG_DEFAULT_BACKENDS_INIT();

	resetCheck();								// reset reason check : mtkim add

	// RTC SET
//	selectRtcSrc();
	ble_stack_init(1);


	while(1)
	{
		NRF_LOG_INFO("test\r\n");
	};



#ifdef MSG_DEVICE_INFO
	displayDeviceInfo1();					// device info output
#endif

#ifdef FEATURE_TEST_MODE
	setTestMode();
#endif

	setUserArea();

#ifdef FEATURE_PRODUCTION_LOCK
	setProductionLock();
#endif

	io_default_setting();
//	INPUT_PIN_CHECK2();
	RAM_Global_Init();

	initFlash();




#ifndef TWI_SW_MASTER_USE
	twi_config();
#else
	/*
	* @return
	 * @retval true TWI bus is clear for transfers.
	 * @retval false TWI bus is stuck.	--> ???
	 */
//	if(!twi_master_init())		// why not ???
	if(twi_master_init())
	{
		#ifdef HALT_ON_I2C_FAILURE
			NRF_LOG_RAW_INFO("I2C init fail !!!\r\n");
			bhwErrorOccurred = true;
			ErrorNoti(0);
		#endif
	}
#endif

#ifndef INTERNAL_RTC_USE
	initRTC(true);
	if(CheckRTC() < RTC_CLOCK_LIMIT)
	{
		#ifdef HALT_ON_RTC_FAILURE
			NRF_LOG_RAW_INFO("RTC init fail !!!\r\n");
			bhwErrorOccurred = true;
			ErrorNoti(1);
		#endif
	}
#else
	m_rtc_option = 1;			// internal RC use
#endif


#if 0	// defined(HALT_ON_I2C_FAILURE) || defined(HALT_ON_RTC_FAILURE)
	if(bhwErrorOccurred)
	{
		NRF_LOG_RAW_INFO("SYSTEM HALT for HW init error !!!\r\n");
		for(;;);
	}
#endif


	// RTC SET
	selectRtcSrc();
	ble_stack_init(m_rtc_option);
	timers_init();
	radio_notification_init();
	device_name_init();

#ifdef RTC_BACKUP_USE
    rtc_timer_init();
#endif

#ifdef MSG_DEVICE_INFO
	displayDeviceInfo2();
#endif

	scheduler_init();

	nrf_drv_rng_init(NULL);

	gap_params_init(false);
////	advertising_init();
	services_init();
	conn_params_init();

	// 2019-01-23 (yeyun) Soft Reset �� ���� Clear �Ѵ�.
	if(IsSoftReset())
	{
		ClearSoftResetFlag();
	}

#ifdef FEATURE_CRYSTAL_TEST
    sd_clock_hfclk_request();
#endif

#ifdef DEBUG_PRINT_GLOBAL
    NRF_LOG_RAW_INFO("\t\t CODEBOOK(%d) - ", get_active_codebook_count());
    dump_8_array(NULL, m_codebook_status, MAX_CODEBOOK_NUM);
#endif


// test
#ifdef SCAN_TEST_USE
	while(1)
	{
//		scanSensitivity();
		scanRawData();
		nrf_delay_ms(50);

	}
#endif

	m_doorlock_init();

#ifdef MSG_DEVICE_INFO
	displayDeviceInfo3();
	NRF_LOG_RAW_INFO("\r\n");
#endif


#ifndef FEATURE_CRYSTAL_TEST
#ifdef WATCHDOG_ENABLE
	watchdog_init();
	watchdog_reset();
#endif
#endif


	// Enter main loop.
	for(;;)
	{
		app_sched_execute();

#ifdef DOORLOCK_RELEASE
		if(app_sched_queue_empty2())
#else
		if(app_sched_queue_empty2() && (NRF_LOG_PROCESS() == false))
#endif
		{
			power_manage();
#ifdef WATCHDOG_ENABLE
			watchdog_reset();
#endif
		}
	}

#endif



}



/**
 * @}
 */
32222.sdk_config.h
Related