I have developed my own custom BLE service. I need to send BLE characteristic to an SD card. I have implemented the FATFS example and it works.
Now I'm trying to merge my custom BLE application with FATFS. However, I've not been able to link a BLE characteristic WRITE event to write to writing to FATFS.
Here is the code snippet. Here I'm just trying to link a BLE WRITE event to a FATFS WRITE function to write a generic string to the file (not sending characteristic data).
However, on debugging, the program execution never seems to enter the fatfs_write() function.
What could be happening? Is there something wrong in the program flow logic? Please help.
Thanks
static void on_cus_evt(ble_cus_t * p_cus_service,
ble_cus_evt_t * p_evt,
ble_evt_t const * p_ble_evt_main)
{
ret_code_t err_code;
switch(p_evt->evt_type)
{
case BLE_CUS_EVT_WRITE:
nrf_gpio_pin_toggle(LED_3);
printf("%s"," write to sd card ");
flag =1;
break;
case 2: ....
case 3: ....
}
void fatfs_write()
{
NRF_LOG_INFO("Writing to file " FILE_NAME "...");
ff_result = f_open(&file, FILE_NAME, FA_READ | FA_WRITE | FA_OPEN_APPEND);
if (ff_result != FR_OK)
{
NRF_LOG_INFO("Unable to open or create file: " FILE_NAME ".");
printf("%s"," unable to open ");
return;
}
ff_result = f_write(&file, TEST_STRING, sizeof(TEST_STRING) - 1, (UINT *) &bytes_written);
if (ff_result != FR_OK)
{
NRF_LOG_INFO("Write failed\r\n.");
printf("%s"," write failed ");
}
else
{
NRF_LOG_INFO("%d bytes written.", bytes_written);
printf("%s"," byted written ");
}
(void) f_close(&file);
flag =0;
return;
}
void main()
{
//initialize BLE, FATFS
for (;;)
{
if(flag)
{
fatfs_write();
}
}
}