Передача данных внешней структуры в класс C - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь реализовать класс в 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 и пытаюсь изучить концепции и реализовать их. Пожалуйста, поправьте меня, если я использую неправильный жаргон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...