VLCB
Loading...
Searching...
No Matches
SerialGC.h
Go to the documentation of this file.
1// Copyright (C) David Ellis
2// This file is part of VLCB-Arduino project on https://github.com/SvenRosvall/VLCB-Arduino
3// Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
4// The full licence can be found at: http://creativecommons.org/licenses/by-nc-sa/4.0/
5
6#pragma once
7
8// header files
9#include <Arduino.h>
10#include <Stream.h>
11#include <Controller.h>
12#include <CanTransport.h>
13#include <GridConnect.h>
14
15namespace VLCB
16{
17
18 // constants
19
20 // grid connect should be 28 characters maximum
21 static const int RXBUFFERSIZE = 30;
22
25 class SerialGC : public CanTransport
26 {
27 public:
28 SerialGC(Stream& _serial = Serial) : serial(_serial) {}
30 bool begin();
31
32 virtual bool available() override;
33 virtual CANFrame getNextCanFrame() override;
34 virtual bool sendCanFrame(CANFrame *frame) override;
35 virtual void reset() override;
36 virtual byte getHardwareType() { return CAN_HW_SERIAL; };
37
38 virtual unsigned int receiveCounter() override { return receivedCount; }
39 virtual unsigned int transmitCounter() override { return transmitCount; }
40 virtual unsigned int receiveBufferSize() override { return RXBUFFERSIZE; }
41 virtual unsigned int transmitBufferSize() override { return RXBUFFERSIZE; }
42 virtual unsigned int receiveErrorCounter() override { return receiveErrorCount; }
43 virtual unsigned int transmitErrorCounter() override { return transmitErrorCount; }
44 virtual unsigned int receiveBufferUsage() override { return 0; };
45 virtual unsigned int transmitBufferUsage() override { return 0; };
46 virtual unsigned int receiveBufferPeak() override { return 0; };
47 virtual unsigned int transmitBufferPeak() override { return 0; };
48 virtual unsigned int errorStatus() override { return 0; }
50
51 private:
52 Stream& serial;
53
54 char rxBuffer[RXBUFFERSIZE]; // Define a byte array to store the incoming data
55 char txBuffer[RXBUFFERSIZE]; // Define a byte array to store the outgoing data
56 CANFrame rxCANFrame;
57
58 unsigned int receivedCount = 0;
59 unsigned int transmitCount = 0;
60 unsigned int receiveErrorCount = 0;
61 unsigned int transmitErrorCount = 0;
62
63 void debugCANMessage(CANFrame frame);
64
65 };
66
67}
Interface base class for CAN transport implementations.
Definition CanTransport.h:35
virtual CANFrame getNextCanFrame() override
Definition SerialGC.cpp:87
virtual unsigned int transmitBufferPeak() override
Definition SerialGC.h:47
virtual unsigned int transmitBufferUsage() override
Definition SerialGC.h:45
SerialGC(Stream &_serial=Serial)
Definition SerialGC.h:28
virtual unsigned int transmitErrorCounter() override
Definition SerialGC.h:43
virtual unsigned int errorStatus() override
Definition SerialGC.h:48
virtual unsigned int receiveBufferUsage() override
Definition SerialGC.h:44
virtual unsigned int transmitCounter() override
Definition SerialGC.h:39
virtual unsigned int transmitBufferSize() override
Definition SerialGC.h:41
virtual unsigned int receiveBufferPeak() override
Definition SerialGC.h:46
virtual byte getHardwareType()
Definition SerialGC.h:36
virtual unsigned int receiveCounter() override
Definition SerialGC.h:38
virtual void reset() override
reset
Definition SerialGC.cpp:116
virtual unsigned int receiveErrorCounter() override
Definition SerialGC.h:42
virtual bool sendCanFrame(CANFrame *frame) override
send a CANMessage message in GridConnect format
Definition SerialGC.cpp:97
virtual bool available() override
Check if an incoming CAN frame is available on the CAN bus.
Definition SerialGC.cpp:32
virtual unsigned int receiveBufferSize() override
Definition SerialGC.h:40
bool begin()
Definition SerialGC.cpp:20
Definition AbstractEventTeachingService.cpp:13
Represents a CAN frame sent on the CAN bus.
Definition CanTransport.h:21
@ CAN_HW_SERIAL
Definition vlcbdefs.hpp:673