: nRF52 및 Android앱를 사용해 Advertising 이름에 한글을 넣어 보았습니다.
0> Adertising 이름 설정하기
#define TEST_NAME "TEST_123"
err_code = sd_ble_gap_device_name_set(&sec_mode,
(const uint8_t *)TEST_NAME,
strlen(TEST_NAME));
1> Advertising 데이타에 한글 넣기
==> main.c 에 삽입시 성능이 너무 느려짐.. (SES 디버깅)
#define DEVICE_NAME "테스트"
sd_ble_gap_device_name_set(&sec_mode, (const uint8_t *)DEVICE_NAME, strlen(DEVICE_NAME));
2> NUS 서비스를 사용해 앱에서 이름 전송하게 변경
2-1> 앱에서 이름 설정 및 UTF8 포맷으로 이름전송하기
fun cmdChangeDevName(devName : String) : Int {
val aName =devName.toByteArray(Charsets.UTF_8)
~~ 중략 ~~
bluetoothGatt?.writeCharacteristic(charac)
}
>> "리모컨123" String 데이타를 UTF_8 형으로 변환을 해줍니다.
< 분석 >
"리" 글자만 변환하는 방법을 분석해 보겠습니다.
한글 "리" 의 16진수 Unicode 값 : B9AC (10111001 10101100 )
UTF-8 변환
10111001 10101100
11101011 10100110 10101100
아래의 변환공식 참고하세요.
2-2> 전송된 이름 Flash 저장
FDS 사용해 UTF-8 포맷 데이타 그대로 쓰기
static fds_record_t const m_sys_config_record =
{
.file_id = CONFIG_SYS_FILE,
.key = CONFIG_SYS_REC_KEY,
.data.p_data = &g_sys_config,
/* The length of a record is always expressed in 4-byte units (words). */
.data.length_words = (sizeof(g_sys_config) + 3) / sizeof(uint32_t),
};
iRet = fds_record_write(&desc, &m_sys_config_record);
2-3> Flash 저장된 이름을 가져와 ADV 하기
static void gap_params_init(void)
{
err_code = sd_ble_gap_device_name_set(&sec_mode,
(const uint8_t *)&g_sys_config.device_name,
strlen(&g_sys_config.device_name));
~~ 중략 ~~
}
3> 화면에 표시되는 ADV 이름 체킹
일본어도 한글처럼 UTF8로 변환후 저장하면 ADV 이름이 변경됩니다.
그럼 오늘 하루도 수고하세요.
반응형
'Nordic_nRF52' 카테고리의 다른 글
[nRF52 ] FDS_ERR_UNALIGNED_ADDR 에러 디버깅 (0) | 2023.09.08 |
---|---|
[nRF52 ] Release 모드 DEBUG 로그 안 나오게 설정하기 (0) | 2023.08.31 |
[NRF52] ble_app_blinky 프로젝트에 multi link 추가하기 (0) | 2023.06.27 |
[Nordic Tool] Power Profiler Kit II 사용하기 (0) | 2023.06.16 |
[nRF52] radio_test 프로젝트에 button 기능 넣기 (0) | 2023.04.12 |