save failed integration state
This commit is contained in:
@ -0,0 +1,42 @@
|
||||
#ifndef GS_PARAM_INTERNAL_PP_I2C_I2C_H
|
||||
#define GS_PARAM_INTERNAL_PP_I2C_I2C_H
|
||||
/* Copyright (c) 2013-2017 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/pp/i2c/i2c.h>
|
||||
#include <gs/param/internal/pp/i2c/slave_dispatch.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define GS_PARAM_I2C_LENGTH_TABLE(length, table) ((length << 3) | (table & 0x07))
|
||||
#define GS_PARAM_I2C_LENGTH_TABLE_TO_LENGTH(lt) ((lt >> 3) & 0x1f)
|
||||
#define GS_PARAM_I2C_LENGTH_TABLE_TO_TABLE(lt) (lt & 0x07)
|
||||
|
||||
/**
|
||||
Data structure for setting parameter.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_param_i2c_set_request {
|
||||
gs_i2c_slave_dispatch_header_t header;
|
||||
uint8_t length_table;
|
||||
uint8_t addr;
|
||||
uint8_t data[]; // data (+ checksum)
|
||||
} gs_param_i2c_set_request_t;
|
||||
|
||||
/**
|
||||
Data structure for getting parameter.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_param_i2c_get_request {
|
||||
gs_i2c_slave_dispatch_header_t header;
|
||||
uint8_t length_table;
|
||||
uint8_t addr;
|
||||
uint8_t checksum; // optional
|
||||
} gs_param_i2c_get_request_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
@ -0,0 +1,71 @@
|
||||
#ifndef GS_PARAM_INTERNAL_PP_I2C_SLAVE_DISPATCH_H
|
||||
#define GS_PARAM_INTERNAL_PP_I2C_SLAVE_DISPATCH_H
|
||||
/* Copyright (c) 2013-2017 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/util/drivers/i2c/slave.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Header for I2C slave dispatch protocol - must be first in all protocols.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_i2c_slave_dispatch_header {
|
||||
uint8_t domain_command;
|
||||
} gs_i2c_slave_dispatch_header_t;
|
||||
|
||||
/**
|
||||
Make header from domain and command.
|
||||
*/
|
||||
#define GS_I2C_SLAVE_DISPATCH_HEADER(domain, command) ((domain << 5) | (command & 0x1f))
|
||||
|
||||
/**
|
||||
Extract domain from header.
|
||||
*/
|
||||
#define GS_I2C_SLAVE_DISPATCH_HEADER_TO_DOMAIN(header) ((header >> 5) & 0x7)
|
||||
|
||||
/**
|
||||
Extract comman from header.
|
||||
*/
|
||||
#define GS_I2C_SLAVE_DISPATCH_HEADER_TO_COMMAND(header) (header & 0x1f)
|
||||
|
||||
/**
|
||||
Domain handler.
|
||||
|
||||
Basically same features as normal I2C slave rx callback. The generic I2C dispatch interface will parse the header (first byte)
|
||||
and call the associated handler, based on the domain.
|
||||
|
||||
@param[in] channel I2C channel (handle).
|
||||
@param[in] cmd domain specific command.
|
||||
@param[in] rx_buffer Pointer to start of rx buffer.
|
||||
@param[in] rx number of bytes received so far.
|
||||
@param[in] cswitch If called from within an ISR (embedded platform), this will none NULL.
|
||||
@return total number of bytes to receive before next call back. Return 0 to ignore rest of data - no additional call backs will be done for current I2C transaction.
|
||||
*/
|
||||
typedef void (* gs_i2c_slave_dispatch_handler_t)(uint8_t channel, uint8_t cmd, const uint8_t * rx, size_t rx_length, gs_context_switch_t * cswitch);
|
||||
|
||||
/**
|
||||
Dispatch domains.
|
||||
|
||||
Standard domains should be assigned from the lowest value.
|
||||
Application/board/product should be assigned from highest value.
|
||||
*/
|
||||
typedef enum {
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_RESERVED = 0, //! Avoid use - reserved for GSSB, GSSB broadcasts UID request on domain=0, cmd=13
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER1, //! Avoid use - overlap with GSSB commands
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER2, //! Avoid use - may overlap with GSSB commands
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER3, //! Avoid use - may overlap with GSSB commands
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_PARAM, //! Reserved for libparam.
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER5,
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER6,
|
||||
GS_I2C_SLAVE_DISPATCH_DOMAIN_USER7,
|
||||
} gs_i2c_slave_dispatch_domain_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
@ -0,0 +1,80 @@
|
||||
#ifndef GS_PARAM_INTERNAL_PP_SPI_SLAVE_DISPATCH_H
|
||||
#define GS_PARAM_INTERNAL_PP_SPI_SLAVE_DISPATCH_H
|
||||
/* Copyright (c) 2013-2017 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/util/drivers/spi/slave.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Header for SPI slave dispatch protocol - must be first in all protocols.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_spi_slave_dispatch_header {
|
||||
uint8_t domain_command;
|
||||
} gs_spi_slave_dispatch_header_t;
|
||||
|
||||
/**
|
||||
Make header from domain and command.
|
||||
*/
|
||||
#define GS_SPI_SLAVE_DISPATCH_HEADER(domain, command) ((domain << 5) | (command & 0x1f))
|
||||
|
||||
/**
|
||||
Extract domain from header.
|
||||
*/
|
||||
#define GS_SPI_SLAVE_DISPATCH_HEADER_TO_DOMAIN(header) ((header >> 5) & 0x7)
|
||||
|
||||
/**
|
||||
Extract comman from header.
|
||||
*/
|
||||
#define GS_SPI_SLAVE_DISPATCH_HEADER_TO_COMMAND(header) (header & 0x1f)
|
||||
|
||||
/**
|
||||
Domain handler.
|
||||
|
||||
Basically same features as normal SPI slave rx callback. The generic SPI dispatch interface will parse the header (first byte)
|
||||
and call the associated handler, based on the domain.
|
||||
|
||||
@param[in] channel SPI channel (handle).
|
||||
@param[in] cmd domain specific command.
|
||||
@param[in] rx_buffer Pointer to start of rx buffer.
|
||||
@param[in] rx number of bytes received so far.
|
||||
@param[in] cswitch If called from within an ISR (embedded platform), this will none NULL.
|
||||
@return total number of bytes to receive before next call back. Return 0 to ignore rest of data - no additional call backs will be done for current SPI transaction.
|
||||
*/
|
||||
typedef uint8_t (* gs_spi_slave_dispatch_handler_t)(uint8_t channel, uint8_t cmd, const uint8_t * rx_buffer, size_t rx, gs_context_switch_t * cswitch);
|
||||
|
||||
/**
|
||||
Dispatch domains.
|
||||
|
||||
Standard domains should be assigned form the lowest value.
|
||||
Application/board/product should be assigned from highest value.
|
||||
*/
|
||||
typedef enum {
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_RESERVED = 0, //! Avoid using 0,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER1,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER2,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER3,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_PARAM,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER5,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER6,
|
||||
GS_SPI_SLAVE_DISPATCH_DOMAIN_USER7,
|
||||
} gs_spi_slave_dispatch_domain_t;
|
||||
|
||||
/**
|
||||
Slave dispatch SPI receiver.
|
||||
|
||||
Must be added on the channel as receiver function, using gs_spi_slave_set_rx().
|
||||
|
||||
@param[in] cswitch If called from within an ISR (embedded platform), this will be set and allow for triggering context switch.
|
||||
*/
|
||||
uint8_t gs_spi_slave_dispatch_rx(uint8_t channel, const uint8_t * rx_buffer, size_t rx, bool new_request, gs_context_switch_t * cswitch);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
@ -0,0 +1,65 @@
|
||||
#ifndef GS_PARAM_INTERNAL_PP_SPI_SPI_H
|
||||
#define GS_PARAM_INTERNAL_PP_SPI_SPI_H
|
||||
/* Copyright (c) 2013-2017 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/pp/spi/spi.h>
|
||||
#include <gs/param/internal/pp/spi/slave_dispatch.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Domain commands.
|
||||
*/
|
||||
typedef enum {
|
||||
GS_PARAM_SPI_COMMAND_SET = 1,
|
||||
GS_PARAM_SPI_COMMAND_GET = 2,
|
||||
GS_PARAM_SPI_COMMAND_SET_WITH_CHECKSUM = 10,
|
||||
GS_PARAM_SPI_COMMAND_GET_WITH_CHECKSUM = 11,
|
||||
} gs_param_spi_command_t;
|
||||
|
||||
#define GS_PARAM_SPI_LENGTH_TABLE(length, table) ((length << 3) | (table & 0x07))
|
||||
#define GS_PARAM_SPI_LENGTH_TABLE_TO_LENGTH(lt) ((lt >> 3) & 0x1f)
|
||||
#define GS_PARAM_SPI_LENGTH_TABLE_TO_TABLE(lt) (lt & 0x07)
|
||||
|
||||
/**
|
||||
Data structure for setting parameter.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_param_spi_set {
|
||||
gs_spi_slave_dispatch_header_t header;
|
||||
uint8_t length_table;
|
||||
uint8_t addr;
|
||||
uint8_t data[]; // data (+ checksum)
|
||||
} gs_param_spi_set_t;
|
||||
|
||||
/**
|
||||
Data structure for getting parameter.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_param_spi_get {
|
||||
gs_spi_slave_dispatch_header_t header;
|
||||
uint8_t length_table;
|
||||
uint8_t addr;
|
||||
uint8_t filler; // filler/delay - allow slave to find and prepare data/response
|
||||
uint8_t data[]; // data
|
||||
} gs_param_spi_get_t;
|
||||
|
||||
/**
|
||||
Data structure for getting parameter with checksum
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) gs_param_spi_get_with_checksum {
|
||||
gs_spi_slave_dispatch_header_t header;
|
||||
uint8_t length_table;
|
||||
uint8_t addr;
|
||||
uint8_t checksum;
|
||||
uint8_t filler; // filler/delay - allow slave to find and prepare data/response
|
||||
uint8_t data[]; // data + checksum
|
||||
} gs_param_spi_get_with_checksum_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
146
gomspace/libparam_client/include/gs/param/internal/rparam.h
Normal file
146
gomspace/libparam_client/include/gs/param/internal/rparam.h
Normal file
@ -0,0 +1,146 @@
|
||||
#ifndef GS_PARAM_INTERNAL_RPARAM_H
|
||||
#define GS_PARAM_INTERNAL_RPARAM_H
|
||||
/* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/rparam.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Max query payload in a single message (bytes).
|
||||
*/
|
||||
#define GS_RPARAM_QUERY_MAX_PAYLOAD 180
|
||||
|
||||
/**
|
||||
Macro for calculating total query message size, header + payload.
|
||||
*/
|
||||
#define RPARAM_QUERY_LENGTH(query, payload_size) (sizeof(*query) - sizeof(query->payload) + payload_size)
|
||||
|
||||
/**
|
||||
R(emote) parameter request codes.
|
||||
*/
|
||||
typedef enum {
|
||||
/**
|
||||
Get one or more parameters.
|
||||
*/
|
||||
RPARAM_GET = 0x00,
|
||||
/**
|
||||
Reply to a request.
|
||||
*/
|
||||
RPARAM_REPLY = 0x55,
|
||||
/**
|
||||
Set one or more parameters.
|
||||
*/
|
||||
RPARAM_SET = 0xFF,
|
||||
// RPARAM_SET_TO_FILE = 0xEE,
|
||||
/**
|
||||
Download table specification.
|
||||
*/
|
||||
RPARAM_TABLE = 0x44,
|
||||
/**
|
||||
Copy memory slot to memory slot.
|
||||
@version 4.x: Not supported.
|
||||
*/
|
||||
RPARAM_COPY = 0x77,
|
||||
/**
|
||||
Load from file (slot) to memory (slot).
|
||||
@version 4.x: Only load from primary store - file (slot) is ignored.
|
||||
*/
|
||||
RPARAM_LOAD = 0x88,
|
||||
/**
|
||||
Load from file (slot) to memory (slot).
|
||||
@version 4.x: load by name(s).
|
||||
*/
|
||||
RPARAM_LOAD_FROM_STORE = 0x89,
|
||||
/**
|
||||
Save from memory (slot) to file (slot).
|
||||
@version 4.x: Only save to primary store - file (slot) is ignored.
|
||||
*/
|
||||
RPARAM_SAVE = 0x99,
|
||||
/**
|
||||
Save from memory (slot) to file (slot).
|
||||
@version 4.x: save by name(s).
|
||||
*/
|
||||
RPARAM_SAVE_TO_STORE = 0x9a,
|
||||
// RPARAM_CLEAR = 0xAA, - completely removed
|
||||
} gs_rparam_action_t;
|
||||
|
||||
/**
|
||||
R(emote) parameter reply/completion codes.
|
||||
*/
|
||||
typedef enum {
|
||||
RPARAM_SET_OK = 1,
|
||||
RPARAM_LOAD_OK = 2,
|
||||
RPARAM_SAVE_OK = 3,
|
||||
RPARAM_COPY_OK = 4,
|
||||
// RPARAM_CLEAR_OK = 5,
|
||||
RPARAM_ERROR = 0xFF,
|
||||
} gs_rparam_reply_t;
|
||||
|
||||
/**
|
||||
Payload - save/load to/from stores
|
||||
@version 4
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
char table[25 + 1];
|
||||
char store[25 + 1];
|
||||
char slot[25 + 1];
|
||||
} gs_rparam_query_payload_store_t;
|
||||
|
||||
/**
|
||||
Payload.
|
||||
*/
|
||||
typedef union __attribute__ ((packed)) {
|
||||
uint16_t addr[0]; //! action = RPARAM_GET
|
||||
uint8_t packed[0]; //! action = RPARAM_REPLY | RPARAM_SET
|
||||
struct { //! action = RPARAM_COPY | RPARAM_LOAD | RPARM_SAVE
|
||||
uint8_t from;
|
||||
uint8_t to;
|
||||
} copy;
|
||||
} gs_rparam_query_payload_t;
|
||||
|
||||
/**
|
||||
Protocol between client and server.
|
||||
@version 4.x: layout (size) has not changed - only naming of certain fields.
|
||||
*/
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
/**
|
||||
Request (gs_rparam_action_t) or Reply (gs_rparam_reply_t).
|
||||
*/
|
||||
uint8_t action;
|
||||
/**
|
||||
Table id.
|
||||
Name changed in 4.0 from \a mem.
|
||||
*/
|
||||
uint8_t table_id;
|
||||
/**
|
||||
Length/size of \a payload in bytes.
|
||||
*/
|
||||
uint16_t length;
|
||||
/**
|
||||
Fletcher's checksum.
|
||||
*/
|
||||
uint16_t checksum;
|
||||
/**
|
||||
Sequence number when split over multiple frames (messages).
|
||||
*/
|
||||
uint16_t seq;
|
||||
/**
|
||||
Total number of frames.
|
||||
*/
|
||||
uint16_t total;
|
||||
/**
|
||||
Payload.
|
||||
*/
|
||||
gs_rparam_query_payload_t payload;
|
||||
} gs_rparam_query_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
@ -0,0 +1,29 @@
|
||||
#ifndef GS_PARAM_INTERNAL_SERIALIZE_H
|
||||
#define GS_PARAM_INTERNAL_SERIALIZE_H
|
||||
/* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/serialize.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Serialize data
|
||||
* @param mem Pointer to indexed parameter table
|
||||
* @param addr Array of addresses to serialize
|
||||
* @param addr_count number of items in addr array
|
||||
* @param[in|out] param_offset table parameter offset
|
||||
* @param flags Set options using combination of flags
|
||||
* @param buf Pointer to output
|
||||
* @param buf_size Size of \a buf.
|
||||
*/
|
||||
gs_error_t gs_param_serialize_list(gs_param_table_instance_t * tinst, const uint16_t addr[], unsigned int addr_count, unsigned int * param_pos, uint32_t flags, uint8_t * buf, unsigned int buf_size, unsigned int * buf_pos);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
19
gomspace/libparam_client/include/gs/param/internal/table.h
Normal file
19
gomspace/libparam_client/include/gs/param/internal/table.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef GS_PARAM_INTERNAL_TABLE_H
|
||||
#define GS_PARAM_INTERNAL_TABLE_H
|
||||
/* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/table.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
gs_error_t gs_param_parse_name_and_array_index(const char * inp, char * name, size_t size_name, uint8_t * array_index, bool * return_is_array);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
129
gomspace/libparam_client/include/gs/param/internal/types.h
Normal file
129
gomspace/libparam_client/include/gs/param/internal/types.h
Normal file
@ -0,0 +1,129 @@
|
||||
#ifndef GS_PARAM_INTERNAL_TYPES_H
|
||||
#define GS_PARAM_INTERNAL_TYPES_H
|
||||
/* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */
|
||||
|
||||
#if (GS_PARAM_INTERNAL_USE)
|
||||
|
||||
#include <gs/param/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Table instance.
|
||||
*/
|
||||
struct gs_param_table_instance {
|
||||
/**
|
||||
Name of table.
|
||||
*/
|
||||
const char * name;
|
||||
|
||||
/**
|
||||
Table id.
|
||||
*/
|
||||
gs_param_table_id_t id;
|
||||
|
||||
/**
|
||||
Table elements/rows.
|
||||
*/
|
||||
const gs_param_table_row_t * rows;
|
||||
/**
|
||||
Table element/row count.
|
||||
*/
|
||||
unsigned int row_count;
|
||||
|
||||
/**
|
||||
Table memory - volatile parameter store.
|
||||
The allocated size must be at least \a memory_size bytes.
|
||||
*/
|
||||
void * memory;
|
||||
|
||||
/**
|
||||
Size of table data memory in bytes, normally size of memory allocated \a memory.
|
||||
Size must always be specified, even when using function interface and no memory is allocated.
|
||||
*/
|
||||
unsigned int memory_size;
|
||||
|
||||
/**
|
||||
Function interface, e.g. get/set.
|
||||
*/
|
||||
gs_param_function_interface_t function_interface;
|
||||
|
||||
/**
|
||||
Checksum - based on host order (e.g. le or be).
|
||||
@see gs_param_table_checksum()
|
||||
*/
|
||||
uint16_t checksum;
|
||||
|
||||
/**
|
||||
Checksum - based on big-endian (address converted to big-endian).
|
||||
@see gs_param_table_checksum_be()
|
||||
*/
|
||||
uint16_t checksum_be;
|
||||
|
||||
/**
|
||||
Checksum - based on little-endian (address converted to little-endian).
|
||||
@see gs_param_table_checksum_le()
|
||||
*/
|
||||
uint16_t checksum_le;
|
||||
|
||||
/**
|
||||
Lock.
|
||||
Internal access/use only, use gs_param_lock() and gs_param_unlock() to lock and un-lock table.
|
||||
*/
|
||||
gs_mutex_t lock;
|
||||
|
||||
/**
|
||||
Callback for table (data) change.
|
||||
*/
|
||||
void (*callback)(uint16_t addr, gs_param_table_instance_t * tinst);
|
||||
|
||||
/**
|
||||
Store location(s).
|
||||
CSV format, e.g. \"persistent,protected\".
|
||||
*/
|
||||
const char * stores;
|
||||
|
||||
/**
|
||||
Auto-persist.
|
||||
*/
|
||||
struct {
|
||||
/**
|
||||
Store.
|
||||
*/
|
||||
const char * store;
|
||||
|
||||
/**
|
||||
User context(s) for the \a set function.
|
||||
*/
|
||||
void * context1;
|
||||
void * context2;
|
||||
|
||||
/**
|
||||
Set/write parameter.
|
||||
*/
|
||||
gs_error_t (*set)(gs_param_table_instance_t * tinst, uint16_t addr, gs_param_type_t type, const void * item, size_t size, uint32_t flags);
|
||||
} auto_persist;
|
||||
|
||||
/**
|
||||
Function for initializing table.
|
||||
*/
|
||||
gs_error_t (*initializer_function)(gs_param_table_instance_t * tinst);
|
||||
|
||||
/**
|
||||
Default values for initializing table.
|
||||
*/
|
||||
const void * default_values;
|
||||
|
||||
/**
|
||||
Future flags.
|
||||
*/
|
||||
uint32_t flags;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
Reference in New Issue
Block a user