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
  • Bryan

    You don't need to typedef the struct (as you only have one instance of it)

    So you can just do

    struct
    {
        uint8_t     currentSetting;
        int16_t     photocellThreshold;
        uint16_t    pwmValue;
        bool        powerState;
        uint32_t    remoteMode1;
        uint32_t    remoteMode2;
        uint32_t    remoteMode3;
    } myData;
    
    main()
    {
        	myData.currentSetting=12;// assign some initial value
    }
    

    I've not used the FDS, but you should just need to do something like

    record_chunk.p_data = &myData;
    record_chunk.length_words = sizeof(myData)/4; // NOTE. I DONT KNOW WHAT SIZE IS A "WORD" 
    

    Please check if a word is 4 bytes, but it appears to be as int32 (4 bytes) uses length_words = 1 infocenter.nordicsemi.com/index.jsp

Reply
  • Bryan

    You don't need to typedef the struct (as you only have one instance of it)

    So you can just do

    struct
    {
        uint8_t     currentSetting;
        int16_t     photocellThreshold;
        uint16_t    pwmValue;
        bool        powerState;
        uint32_t    remoteMode1;
        uint32_t    remoteMode2;
        uint32_t    remoteMode3;
    } myData;
    
    main()
    {
        	myData.currentSetting=12;// assign some initial value
    }
    

    I've not used the FDS, but you should just need to do something like

    record_chunk.p_data = &myData;
    record_chunk.length_words = sizeof(myData)/4; // NOTE. I DONT KNOW WHAT SIZE IS A "WORD" 
    

    Please check if a word is 4 bytes, but it appears to be as int32 (4 bytes) uses length_words = 1 infocenter.nordicsemi.com/index.jsp

Children
No Data
Related