Я пытаюсь реализовать класс в C, который будет принимать данные Struct из файла приложения и использовать элементы структуры для дальнейшей обработки.
В файле приложения у меня есть следующая структура data:
struct RadioPacket // Any packet up to 32 bytes can be sent.
{
uint8_t FromRadioId;
int distance;
char sensingRole;
uint16_t eventCount;
uint32_t FailedTxCount;
};
RadioPacket _radioData1;
RadioPacket _radioData2;
Далее, допустим, у меня есть класс NodeCount , реализованный правильно. Класс будет иметь следующую функцию, которая будет принимать указанные выше структурные данные.
void NodeCount :: compute(struct radioData *ptr, uint8_t* uCount, uint8_t* lCount){
/*I want to access the value of the struct members in this block
After processing the uCount and lcount will be a updated.
*/
}
В файле приложения я хотел бы использовать его следующим образом. (Предполагая, что класс-оболочка записан NodeCount )
NodeCount receiver1;
struct _counts{
uint8_t lCount;
uint8_t uCount;
}counts;
reciever1.compute(&_radioData1, &counts.lcount, &counts.uCount);
Я мог ошибаться, думая о реализации функции. Мне бы очень хотелось, чтобы меня указали в правильном направлении.
Вот как я пытаюсь реализовать:
Файл: NodeCount.h
#ifndef NODECOUNT_H
#define NODECOUNT_H
#include <stdint.h>
#include <Arduino.h>
class NodeCount {
public:
NodeCount() {}
/* I am confused here, is this the right way?
Can the struct data be private if I do not want the struct to
be accessible outside the class
*/
typedef struct RadioPacket // Any packet up to 32 bytes can be sent.
{
uint8_t FromRadioId;
int distance;
char sensingRole;
uint16_t eventCount;
uint32_t FailedTxCount;
}radioData;
void compute(radioData *ptr, uint8_t* uCount, uint8_t* lCount);
private:
typedef struct nodeRecords
{
uint16_t nodeEvent;
int16_t nodeData;
};
const static uint8_t uMax = 5, lMax = 5;
//const static uint8_t lastUCount = 0, lastLCount = 0;
nodeRecords typeU[uMax] = {}, typeL[lMax] = {};
};
Файл: NodeCount. cpp
#include "NodeCount.h"
void NodeCount::compute(radioData ptr*, uint8_t* totalUCount, uint8_t* totalLCount) {
uint8_t _U_count_ = 0;
uint8_t _L_count_ = 0;
/*More logic here*/
/*I want to access the external struct data member values here*/
}
NB Я новичок в C и пытаюсь изучить концепции и реализовать их. Пожалуйста, поправьте меня, если я использую неправильный жаргон.