57 lines
1.1 KiB
C
57 lines
1.1 KiB
C
#ifndef sdm_h
|
|
#define sdm_h
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
#include <stdbool.h>
|
|
#include <modbus/modbus.h>
|
|
|
|
#define SDM_OK 0
|
|
#define SDM_EMPTY -1
|
|
#define SDM_MB_ERR -2
|
|
#define SDM_ADDR_ERR -3
|
|
#define SDM_NAME_ERR -4
|
|
#define SDM_TYPE_ERR -5
|
|
#define SDM_COMM_ERR -6
|
|
#define SDM_NOT_IMPL -7
|
|
#define SDM_MEM_ERR -8
|
|
|
|
enum sdm_types {
|
|
SDMNONE,
|
|
SDM230M,
|
|
SDM630M,
|
|
SDM72DM
|
|
};
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
const char *unit;
|
|
const unsigned int regno;
|
|
} sdm_registers_t;
|
|
|
|
typedef union {
|
|
uint16_t v16[2];
|
|
float vf;
|
|
} __attribute__ ((packed)) sdm_values_t;
|
|
|
|
typedef struct {
|
|
modbus_t *mb;
|
|
int address;
|
|
char *friendlyname;
|
|
enum sdm_types type;
|
|
sdm_values_t *values;
|
|
bool valid;
|
|
} sdm_t;
|
|
|
|
sdm_t *sdm_new(modbus_t *mb, int address, char *friendlyname, enum sdm_types type, int *error);
|
|
int sdm_free(sdm_t *sdm);
|
|
int sdm_update(sdm_t *sdm);
|
|
const char *sdm_gettypename(sdm_t *sdm);
|
|
int sdm_print_csv(sdm_t *sdm, char **csv);
|
|
int sdm_print_csv_header(sdm_t *sdm, char **header);
|
|
int sdm_print_json(sdm_t *sdm, char **json);
|
|
|
|
#endif
|