28#ifndef PROTOCORE_SOUTHBOUND_H
29#define PROTOCORE_SOUTHBOUND_H
33#if PROTOCORE_ENABLE_SOUTHBOUND
41#define SB_ERR_NOT_FOUND -1
42#define SB_ERR_UNSUPPORTED -2
58 int (*read)(
void *ctx, uint32_t point, int32_t *value_out);
59 int (*write)(
void *ctx, uint32_t point, int32_t value);
60 int (*read_block)(
void *ctx, uint32_t first, int32_t *out,
size_t n);
61 int (*write_block)(
void *ctx, uint32_t first,
const int32_t *in,
size_t n);
107 const SouthboundDriver *drv;
108 SouthboundPointArgs point;
109 SouthboundBlockArgs block;
112 const SouthboundDriver *driver;
116extern SouthboundVars SouthboundV;
121 void (*
const add)(uint8_t *work);
122 void (*
const clear)(uint8_t *work);
123 void (*
const count)(uint8_t *work);
124 void (*
const find)(uint8_t *work);
125 void (*
const read)(uint8_t *work);
126 void (*
const write)(uint8_t *work);
127 void (*
const read_block)(uint8_t *work);
128 void (*
const write_block)(uint8_t *work);
133void protocore_southbound_add(uint8_t *work);
134void protocore_southbound_clear(uint8_t *work);
135void protocore_southbound_count(uint8_t *work);
136void protocore_southbound_find(uint8_t *work);
137void protocore_southbound_read(uint8_t *work);
138void protocore_southbound_write(uint8_t *work);
139void protocore_southbound_read_block(uint8_t *work);
140void protocore_southbound_write_block(uint8_t *work);
146static const SouthboundNs Southbound __attribute__((unused)) = {
147 .add = protocore_southbound_add,
148 .clear = protocore_southbound_clear,
149 .count = protocore_southbound_count,
150 .find = protocore_southbound_find,
151 .read = protocore_southbound_read,
152 .write = protocore_southbound_write,
153 .read_block = protocore_southbound_read_block,
154 .write_block = protocore_southbound_write_block,
166uint8_t *protocore_southbound_span(
void);
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
#define PROTOCORE_END_DECLS