Skip to content

File Radiocrafts_RC17xxHP_RC232.h

File List > libraries > Radiocrafts_RC17xxHP_RC232 > Radiocrafts_RC17xxHP_RC232.h

Go to the documentation of this file

/*
    RC17xxHP-RC232 - Library for using Radiocrafts RC17xxHP-RC232 RF modules.
    Spaceflight Rocketry Giessen e.V.
    Published under the CERN OHL-S v2 license at https://github.com/Spaceflight-Rocketry-Giessen-e-V/Telemetry.
*/

#ifndef RC17xxHP_RC232_h
#define RC17xxHP_RC232_h

#include "Arduino.h"

class RC17xxHP_RC232
{
public:
    RC17xxHP_RC232(HardwareSerial *serial, uint8_t pinTX, uint8_t pinRX, uint32_t baudrate, uint8_t pinCFG, uint8_t pinRST, uint8_t pinCTS, uint8_t pinRTS);

    void begin();

    uint8_t ping();

    // Serial Functions

    void flush();

    uint16_t serialWait(uint32_t delayMicroseconds);

    void send(uint8_t *bytes, uint8_t length);
    void send(uint8_t byte);

    void read(uint8_t *bytes, uint8_t length);
    uint8_t read();

    uint8_t available();

    // Reset Functions

    uint8_t resetHard();

    uint8_t resetSoft();

    uint8_t memoryReset();

    // Set functions

    uint8_t set_RF_CHANNEL(uint8_t value);

    uint8_t set_RF_POWER(uint8_t value);

    uint8_t set_RF_DATA_RATE(uint8_t value);

    uint8_t set_SLEEP_MODE(uint8_t value);

    uint8_t set_RSSI_MODE(uint8_t value);

    uint8_t set_PACKET_LENGTH(uint8_t value);

    uint8_t set_PACKET_TIMEOUT(uint8_t value);

    uint8_t set_PACKET_END_CHARACTER(uint8_t value);

    uint8_t set_ADDRESS_MODE(uint8_t value);

    uint8_t set_CRC_MODE(uint8_t value);

    uint8_t set_UID(uint8_t value);

    uint8_t set_SID(uint8_t value);

    uint8_t set_DID(uint8_t value);

    uint8_t set_BID(uint8_t value);

    uint8_t set_UART_BAUD_RATE(uint8_t value);

    uint8_t set_UART_FLOW_CONTROL(uint8_t value);

    uint8_t set_LED_CONTROL(uint8_t value);

    // Get functions

    uint8_t get_RF_CHANNEL(uint8_t *result);

    uint8_t get_RF_POWER(uint8_t *result);

    uint8_t get_RF_DATA_RATE(uint8_t *result);

    uint8_t get_SLEEP_MODE(uint8_t *result);

    uint8_t get_RSSI_MODE(uint8_t *result);

    uint8_t get_PACKET_LENGTH(uint8_t *result);

    uint8_t get_PACKET_TIMEOUT(uint8_t *result);

    uint8_t get_PACKET_END_CHARACTER(uint8_t *result);

    uint8_t get_ADDRESS_MODE(uint8_t *result);

    uint8_t get_CRC_MODE(uint8_t *result);

    uint8_t get_UID(uint8_t *result);

    uint8_t get_SID(uint8_t *result);

    uint8_t get_DID(uint8_t *result);

    uint8_t get_BID(uint8_t *result);

    uint8_t get_UART_BAUD_RATE(uint8_t *result);

    uint8_t get_UART_FLOW_CONTROL(uint8_t *result);

    uint8_t get_LED_CONTROL(uint8_t *result);

    // Read functions

    uint8_t read_RSSI(float *result);

    uint8_t read_TEMPERATURE(int8_t *result);

    uint8_t read_VOLTAGE(float *result);

    // Test modes

    // uint8_t TEST_MODE_0();

    // uint8_t TEST_MODE_1();

    // uint8_t TEST_MODE_2();

    // uint8_t TEST_MODE_3();

    // uint8_t TEST_MODE_4();

private:
    uint8_t _pinRST;
    uint8_t _pinCTS;
    uint8_t _pinCFG;
    uint8_t _pinRTS;
    uint8_t _pinTX;
    uint8_t _pinRX;
    uint32_t _baudrate;
    HardwareSerial *_serial;

    uint8_t configEnter();
    uint8_t configExit();
    uint8_t configCommand(uint8_t command);
    uint8_t memoryRead(uint8_t address, uint8_t *result);
    uint8_t memoryWrite(uint8_t address, uint8_t value);
};

#endif