Subversion Repositories DashDisplay

Rev

Rev 79 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
66 mjames 1
/*
2
 * nvram.h
3
 *
4
 *  Created on: 4 Jun 2017
5
 *      Author: Mike
6
 */
80 mjames 7
#if defined SEMIHOSTING
8
#include <stdio.h>
9
extern void initialise_monitor_handles(void);
10
#endif
11
 
66 mjames 12
#include "libPLX/plx.h"
13
 
14
#pragma once
15
 
16
 
17
#if defined __cplusplus
18
extern "C"
19
{
20
#endif
21
#pragma pack(push, 1)
22
 
23
    ///\brief State of currently displayed item
24
    /// this is expected to be packed into 32 bits 
25
    typedef union
26
    {
27
        struct
28
        {
79 mjames 29
            unsigned tag : 8; // dial tag 
30
            unsigned : 16;  // filler 
31
            int pos:  8;   // dial position code 
66 mjames 32
        } data;
33
        uint32_t u32;
34
    } nvram_info_t;
35
#pragma pack(pop)
36
 
37
// Allocation of NVRAM words : there are 4k bytes
38
#define NVRAM_WORDS (4096 / sizeof(nvram_info_t))
39
 
70 mjames 40
    /// @brief Erase every NVRAM entry
41
    extern void erase_nvram();
42
 
43
    /// @brief Save data, replacing any with a matching tag field.
44
    /// @param data data item to write 
66 mjames 45
    extern void write_nvram_data(nvram_info_t data);
46
 
70 mjames 47
    // 
48
    /// @brief Find data according to the tag field/
49
    /// @param tag tag code to find
50
    /// @return a pointer to the nvram data with matching tag or NULL if not found
66 mjames 51
    extern nvram_info_t *find_nvram_data(uint8_t tag);
52
 
53
#if defined __cplusplus
54
}
55
#endif