add print, println for linux fix compile error on linux

This commit is contained in:
Thomas Kunze 2018-08-16 22:56:51 +02:00
parent 96f8a1bffb
commit 4dffda5574
5 changed files with 218 additions and 11 deletions

179
bits.cpp
View File

@ -73,3 +73,182 @@ uint32_t getInt(uint8_t * data)
{
return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];
}
#ifdef __linux__
void print(const char* s)
{
printf("%s", s);
}
void print(char c)
{
printf("%c", c);
}
void print(unsigned char num)
{
print(num, DEC);
}
void print(unsigned char num, int base)
{
if (base == HEX)
printf("%X", num);
else
printf("%d", num);
}
void print(int num)
{
print(num, DEC);
}
void print(int num, int base)
{
if (base == HEX)
printf("%X", num);
else
printf("%d", num);
}
void print(unsigned int num)
{
print(num, DEC);
}
void print(unsigned int num, int base)
{
if (base == HEX)
printf("%X", num);
else
printf("%d", num);
}
void print(long num)
{
print(num, DEC);
}
void print(long num, int base)
{
if (base == HEX)
printf("%lX", num);
else
printf("%ld", num);
}
void print(unsigned long num)
{
print(num, DEC);
}
void print(unsigned long num, int base)
{
if (base == HEX)
printf("%lX", num);
else
printf("%ld", num);
}
void print(double num)
{
printf("%f", num);
}
void println(const char* s)
{
printf("%s\n", s);
}
void println(char c)
{
printf("%c\n", c);
}
void println(unsigned char num)
{
println(num, DEC);
}
void println(unsigned char num, int base)
{
if (base == HEX)
printf("%X\n", num);
else
printf("%d\n", num);
}
void println(int num)
{
println(num, DEC);
}
void println(int num, int base)
{
if (base == HEX)
printf("%X\n", num);
else
printf("%d\n", num);
}
void println(unsigned int num)
{
println(num, DEC);
}
void println(unsigned int num, int base)
{
if (base == HEX)
printf("%X\n", num);
else
printf("%d\n", num);
}
void println(long num)
{
println(num, DEC);
}
void println(long num, int base)
{
if (base == HEX)
printf("%lX\n", num);
else
printf("%ld\n", num);
}
void println(unsigned long num)
{
println(num, DEC);
}
void println(unsigned long num, int base)
{
if (base == HEX)
printf("%lX\n", num);
else
printf("%ld\n", num);
}
void println(double num)
{
printf("%f\n", num);
}
void println(void)
{
printf("\n");
}
#endif
void printHex(const char* suffix, const uint8_t *data, size_t length)
{
_print(suffix);
for (size_t i = 0; i < length; i++) {
if (data[i] < 0x10) { _print("0"); }
_print(data[i], HEX);
_print(" ");
}
_print("\n");
}

30
bits.h
View File

@ -4,9 +4,37 @@
#ifdef __linux__
#include <arpa/inet.h>
#include <cstdio>
#define lowByte(val) ((val) & 255)
#define highByte(val) (((val) >> ((sizeof(val) - 1) << 3)) & 255)
#define bitRead(val, bitno) (((val) >> (bitno)) & 1)
#define DEC 10
#define HEX 16
#define _print print
#define _println println
void print(const char[]);
void print(char);
void print(unsigned char, int = DEC);
void print(int, int = DEC);
void print(unsigned int, int = DEC);
void print(long, int = DEC);
void print(unsigned long, int = DEC);
void print(double, int = 2);
void println(const char[]);
void println(char);
void println(unsigned char, int = DEC);
void println(int, int = DEC);
void println(unsigned int, int = DEC);
void println(long, int = DEC);
void println(unsigned long, int = DEC);
void println(double, int = 2);
void println(void);
#elif ARDUINO_ARCH_SAMD
#include <Arduino.h>
#define htons(x) ( ((x)<<8) | (((x)>>8)&0xFF) )
@ -24,7 +52,7 @@
#define printf Serial.printf
#endif
void printHex(const char* suffix, const uint8_t *data, size_t length);
uint8_t* popByte(uint8_t& b, uint8_t* data);
uint8_t* popWord(uint16_t& w, uint8_t* data);

View File

@ -76,7 +76,7 @@ bool DataLinkLayer::sendTelegram(NPDU & npdu, AckType ack, uint16_t destinationA
if (!frame.valid())
{
_println("invalid frame\n");
_println("invalid frame");
return false;
}

View File

@ -22,13 +22,13 @@ public:
virtual bool sendBytes(uint8_t* buffer, uint16_t len) = 0;
virtual int readBytes(uint8_t* buffer, uint16_t maxLen) = 0;
virtual void setupUart();
virtual void closeUart();
virtual int uartAvailable();
virtual size_t writeUart(const uint8_t data);
virtual size_t writeUart(const uint8_t *buffer, size_t size);
virtual int readUart();
virtual size_t readBytesUart(uint8_t *buffer, size_t length);
virtual void setupUart() = 0;
virtual void closeUart() = 0;
virtual int uartAvailable() = 0;
virtual size_t writeUart(const uint8_t data) = 0;
virtual size_t writeUart(const uint8_t *buffer, size_t size) = 0;
virtual int readUart() = 0;
virtual size_t readBytesUart(uint8_t *buffer, size_t length) = 0;
virtual uint8_t* getEepromBuffer(uint16_t size) = 0;
virtual void commitToEeprom() = 0;

View File

@ -212,8 +212,8 @@ bool TpUartDataLinkLayer::checkDataInd(uint8_t firstByte)
printHex("=>", buffer, len);
CemiFrame frame(buffer, len);
if (frame.addressType() == InduvidualAddress && _deviceObject.induvidualAddress() == frame.destinationAddress()
|| frame.addressType() == GroupAddress && _groupAddressTable.contains(frame.destinationAddress()))
if ((frame.addressType() == InduvidualAddress && _deviceObject.induvidualAddress() == frame.destinationAddress())
|| (frame.addressType() == GroupAddress && _groupAddressTable.contains(frame.destinationAddress())))
{
//send ack.
_platform.writeUart(U_ACK_REQ + 1);