본문으로 바로가기

[nRF52] record_launch_app 프로젝트 분석

category Nordic_nRF52 2022. 12. 30. 11:26

 

0> 개요

 : 안드로이드 폰에 설치된 nRF Toolbox 앱을 NFC tag를 이용해 실행시키는 예제입니다.

 

1> 프로젝트위치

<InstallFolder>\examples\nfc\record_launch_app

 

2> 노르딕 다큐먼트

https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/nfc_record_launch_app.html

 

nRF5 SDK v17.1.0: Launch App Example

The Launch App Example shows how to use the NFC tag to launch an app on a device that supports NFC and runs Android (4.0 or later) or Windows Phone (8.0 or later). To launch the app, the example application exposes an Android Application Record (AAR) and a

infocenter.nordicsemi.com

 

 

3> 테스트

  ▶ compile && program

 

 

    스마트폰 NFC 설정

NFC 모드중 "기본모드" 일경우만 동작합니다.

 

 

  nrf52 보드에 연결된 안테나를 스마트폰 NFC 파트에 터치

   --> 스마트폰에는 nRF Toolbox 앱이 실행이되고

        nRF52 보드는 LED1 이 ON 됩니다.

 

 < 상세분석>

 nRF Toolbox 의 패키지명은" no.nordicsemi.android.nrftoolbox " 이고

 

record_launch_app 프로젝트의 main.c 에 다음과 같은 부분이 있습니다.

static const uint8_t m_android_package_name[] =
		{'n', 'o', '.', 'n', 'o', 'r', 'd', 'i', 'c', 's',
         'e', 'm', 'i', '.', 'a', 'n', 'd', 'r', 'o', 'i',
         'd', '.', 'n', 'r', 'f', 't', 'o', 'o', 'l', 'b',
         'o', 'x'};
         
         
main.c()
{
    ~~~~ 중략 ~~~~
    nfc_t2t_setup(nfc_callback, NULL);
    /* Encode launchapp message into buffer */
    nfc_launchapp_msg_encode(m_android_package_name,
            sizeof(m_android_package_name),
            m_windows_application_id,
            sizeof(m_windows_application_id),
            m_ndef_msg_buf,
            &len);

    nfc_t2t_payload_set(m_ndef_msg_buf, len);
    nfc_t2t_emulation_start();
}

 

 

  안테나를 멀리할경우  LED1 OFF 확인하기

 

 

 

< 기타 >

  ▶   빌드 로그

Building ‘nfc_launchapp_record_pca10040’ 
    from solution ‘nfc_launchapp_record_pca10040’ in configuration ‘Release’
1> Assembling ‘thumb_crt0.s’
2> Compiling ‘nrf_log_backend_rtt.c’
3> Compiling ‘nrf_log_backend_serial.c’
4> Compiling ‘nrf_log_backend_uart.c’
5> Compiling ‘nrf_log_default_backends.c’
6> Compiling ‘nrf_log_frontend.c’
7> Compiling ‘nrf_log_str_formatter.c’
8> Compiling ‘boards.c’
1> Compiling ‘app_error.c’
2> Compiling ‘app_error_handler_gcc.c’
3> Compiling ‘app_error_weak.c’
5> Compiling ‘app_fifo.c’
7> Compiling ‘app_uart_fifo.c’
4> Compiling ‘app_util_platform.c’
8> Compiling ‘hardfault_handler_gcc.c’
1> Compiling ‘hardfault_implementation.c’
2> Compiling ‘nrf_assert.c’
6> Compiling ‘nrf_atomic.c’
3> Compiling ‘nrf_balloc.c’
8> Compiling ‘nrf_fprintf.c’
4> Compiling ‘nrf_fprintf_format.c’
5> Compiling ‘nrf_memobj.c’
7> Compiling ‘nrf_ringbuf.c’
2> Compiling ‘nrf_strerror.c’
1> Compiling ‘nrf_drv_clock.c’
6> Compiling ‘nrf_drv_uart.c’
8> Compiling ‘nrf_nvic.c’
3> Compiling ‘nrf_soc.c’
4> Compiling ‘nrfx_atomic.c’
5> Compiling ‘nrfx_clock.c’
7> Compiling ‘nrfx_nfct.c’
2> Compiling ‘nrfx_prs.c’
3> Compiling ‘nrfx_timer.c’
6> Compiling ‘nrfx_uart.c’
8> Compiling ‘nrfx_uarte.c’
4> Compiling ‘main.c’
1> Compiling ‘SEGGER_RTT.c’
2> Compiling ‘SEGGER_RTT_Syscalls_SES.c’
5> Compiling ‘SEGGER_RTT_printf.c’
7> Assembling ‘ses_startup_nrf52.s’
3> Assembling ‘ses_startup_nrf_common.s’
4> Compiling ‘system_nrf52.c’
7> Compiling ‘nfc_launchapp_msg.c’
8> Compiling ‘nfc_launchapp_rec.c’
6> Compiling ‘nfc_ndef_msg.c’
2> Compiling ‘nfc_ndef_record.c’
3> Compiling ‘nfc_platform.c’
1> Generating linker script ‘nfc_launchapp_record_pca10040.ld’
1> Linking nfc_launchapp_record_pca10040.elf
Build complete

 

   시리얼 로그 메시지가 없어서 안나오나 Enable 상태입니다

     :  아래설정중 COM 포트만 수정하면 됩니다. ( 115200 , 8 ,N ,1, N)

 

--> sdk_config.h 파일 확인내용
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
// <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin 
#ifndef NRF_LOG_BACKEND_UART_TX_PIN
#define NRF_LOG_BACKEND_UART_TX_PIN 6
#endif

// <o> NRF_LOG_BACKEND_UART_BAUDRATE  - Default Baudrate
 
// <323584=> 1200 baud 
// <643072=> 2400 baud 
// <1290240=> 4800 baud 
// <2576384=> 9600 baud 
// <3862528=> 14400 baud 
// <5152768=> 19200 baud 
// <7716864=> 28800 baud 
// <10289152=> 38400 baud 
// <15400960=> 57600 baud 
// <20615168=> 76800 baud 
// <30801920=> 115200 baud 
// <61865984=> 230400 baud 
// <67108864=> 250000 baud 
// <121634816=> 460800 baud 
// <251658240=> 921600 baud 
// <268435456=> 1000000 baud 

#ifndef NRF_LOG_BACKEND_UART_BAUDRATE
#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920
#endif

#ifndef NRF_LOG_ENABLED
#define NRF_LOG_ENABLED 1
#endif

 

다음코드를 메인함수에 추가하면 바로 확인 가능합니다.

NRF_LOG_INFO("%s:start",__func__);

 

 

▶  전화기앱 실행하기 (갤럭시 폰 기준설명)

static const uint8_t m_android_package_name[] = 
			{'c', 'o', 'm', '.', 's', 'a', 'm', 's', 'u', 'n',
             'g', '.','a', 'n', 'd', 'r', 'o', 'i','d', '.', 
             'd', 'i', 'a', 'l', 'e', 'r'};

 

 

 

▶ nRF Toolbox 패키지 이름 찾기  

 D:\> adb shell pm list package
package:kr.or.nhic
package:com.samsung.android.provider.filterprovider
~~~ 중략 ~~~~
package:no.nordicsemi.android.nrftoolbox
~~~ 중략 ~~~~
반응형