This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

FDS: Saving my records

NRF52 DK on SDK 12.2 (using armGCC)

I have the FDS example from GITHUB working - it shows it is writing and reading the example data (0xDEADBEEF and 0xBAADF00D) fine. I want to save my own data as a record instead of the data in the example and I need assistance. Below are the variables that I need to save so I can recover them after a power outage or reboot.

uint8_t		currentSetting;
int16_t		photocellThreshold;
uint16_t	pwmValue;
bool		powerState;
uint32_t	remoteMode1;
uint32_t	remoteMode2;
uint32_t	remoteMode3;

I am not sure if I should have a separate record for each variable or if I should write all as 1 "chunk" of data. Which is better?

My problem is how do I save those different data types into FDS?

How do I recover the settings after reboot?

Also, If the user changes the setting or PWM value for instace, I will use a timer and after 20 seconds of no setting changes, I will update the data to FDS. How can I update that changed information back into FDS?

Can someone assist me? I appreciate any help!

Thanks, Bryan

Parents
  • It would be better to save it as 1 chunk. Writing/Erasing is slow. It is done in background. So you wouldn't want to have to many of them. Also you cannot write to the same location of flash without erasing it first.

  • Bryan

    You should just be able to pass the pointer to your struct to the fs function, and get it to write the raw data back into the struct.

    once its in the struct, you can access the elements like you normal, using the dot syntax.

    Or if the fs function does not simply take a pointer to the destination memory, then you would need to use memcpy to copy it to your struct

    Edit.

    It looks like you need to use memcpy to transfer the data pointed to by p_data to your struct Because the docs say that for the flash_record that

    "However, you should never modify it or use any of its fields."

    So you can't set the data pointer to your struct

    You then need to release the Record, otherwise its wasting valuable RAM

Reply
  • Bryan

    You should just be able to pass the pointer to your struct to the fs function, and get it to write the raw data back into the struct.

    once its in the struct, you can access the elements like you normal, using the dot syntax.

    Or if the fs function does not simply take a pointer to the destination memory, then you would need to use memcpy to copy it to your struct

    Edit.

    It looks like you need to use memcpy to transfer the data pointed to by p_data to your struct Because the docs say that for the flash_record that

    "However, you should never modify it or use any of its fields."

    So you can't set the data pointer to your struct

    You then need to release the Record, otherwise its wasting valuable RAM

Children
No Data
Related