2. pony_bus - p-o-n-y/pony GitHub Wiki

pony_bus - структура, описывающая шину данных

Шаблон:

#define pony_bus_version число //номер версии шины

typedef struct //шина

{

int ver;                   // версия шины

int mode;                  //значение bus.mode

    //дополнительные части: структуры, группирующие данные и/или просто данные

char* cfg;                //общая часть строки конфигурации

int cfglength;            //длина общей части строки конфигурации

} pony_bus;

Пример:

#define pony_bus_version 0

typedef struct

{

int ver; 
              
int mode;                  

pony_imu* imu;

pony_gnss* gnss;

pony_data t;               

char* cfg;  
          
int cfglength;

} pony_bus;

Структуры, группирующие данные:

Шаблон:

typedef struct

{

char* cfg;                //строка конфигурации (только для этой структуры)

int cfglength;            //длина строки конфигурации (только для этой структуры)

    //дополнительные части: структуры, группирующие данные и/или просто данные

char* wcfg;               //общая часть строки конфигурации (для этой и вложенных структур)

int wcfglength;           //длина общей части строки конфигурации (для этой и вложенных структур)

} pony_название;

char* wcfg; int wcfglength; не пишется, если нет вложенных структур в качестве дополнительных частей.

Пример:

typedef struct

{

char* cfg;    
       
int cfglength;            

pony_gnss_gps* gps;

pony_gnss_glo* glo;

pony_time_epoch epoch;

char* wcfg;

int wcfglength;

} pony_gnss;

Навигационные данные могут храниться в обычных числах и массивах, но при необходимости выполнения проверки на валидность данных нужно использовать pony_data или pony_dataArray.

typedef struct

{

double val;                // значение измерения

unsigned char count;       // счетчик для проверки изменения данных

unsigned char valid;       // валидность данных

} pony_data;

typedef struct

{

double *val;               // значения измерений

int count;                 // счетчик для проверки изменения данных

char valid;                // валидность данных

int arrsize;               // размер массива

} pony_dataArray;