[Morse] Added support for Arduino flash strings

pull/13/head
jgromes 2019-05-28 12:43:04 +02:00
rodzic 8931efa4e7
commit fd4da5771c
3 zmienionych plików z 26 dodań i 2 usunięć

Wyświetl plik

@ -74,6 +74,9 @@ void loop() {
// character array (C-String)
morse.print("C-String");
// string saved in flash
morse.print(F("Flash String"));
// character
morse.print('c');

Wyświetl plik

@ -85,6 +85,10 @@ int16_t MorseClient::begin(float base, uint8_t speed) {
return(state);
}
size_t MorseClient::startSignal() {
return(MorseClient::write(0x01));
}
size_t MorseClient::write(const char* str) {
if(str == NULL) {
return(0);
@ -147,8 +151,17 @@ size_t MorseClient::write(uint8_t b) {
return(0);
}
size_t MorseClient::startSignal() {
return(MorseClient::write(0x01));
size_t MorseClient::print(__FlashStringHelper* fstr) {
PGM_P p = reinterpret_cast<PGM_P>(fstr);
size_t n = 0;
while(true) {
char c = pgm_read_byte(p++);
if(c == '\0') {
break;
}
n += MorseClient::write(c);
}
return n;
}
size_t MorseClient::print(const String& str) {
@ -206,6 +219,12 @@ size_t MorseClient::println(void) {
return(MorseClient::write(0x02));
}
size_t MorseClient::println(__FlashStringHelper* fstr) {
size_t n = MorseClient::print(fstr);
n += MorseClient::println();
return(n);
}
size_t MorseClient::println(const String& str) {
size_t n = MorseClient::print(str);
n += MorseClient::println();

Wyświetl plik

@ -44,6 +44,7 @@ class MorseClient {
size_t write(uint8_t* buff, size_t len);
size_t write(uint8_t b);
size_t print(__FlashStringHelper*);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
@ -55,6 +56,7 @@ class MorseClient {
size_t print(double, int = 2);
size_t println(void);
size_t println(__FlashStringHelper*);
size_t println(const String &s);
size_t println(const char[]);
size_t println(char);