Open kwhizr opened 8 years ago
Same issue did anyone fixed ?
Not sure if any of you are still having this problem, but I ran into this as well (Arduino IDE 1.8.2) and fixed it by renaming the files and functions in the library that were causing the issues
Having the same issue (Arduino 1.8.5 & ESP8266). Looks like this file already defined somewhere in sources.
same problem here. I just renamed the two files to MyBase64 and added
to base64.h
This issue still seems to persist on the ESP8266, the workaround proposed by @SimonKlausLudwig does work though, if anyone but me still might come across this issue.
const char PROGMEM b64_alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/";
/ 'Private' declarations / inline void a3_to_a4(unsigned char a4, unsigned char a3); inline void a4_to_a3(unsigned char a3, unsigned char a4); inline unsigned char b64_lookup(char c);
int base64_encode(char output, char input, int inputLen) { int i = 0, j = 0; int encLen = 0; unsigned char a3[3]; unsigned char a4[4];
while(inputLen--) {
a3[i++] = *(input++);
if(i == 3) {
a3_to_a4(a4, a3);
for(i = 0; i < 4; i++) {
output[encLen++] = pgm_read_byte(&b64_alphabet[a4[i]]);
}
i = 0;
}
}
if(i) {
for(j = i; j < 3; j++) {
a3[j] = '\0';
}
a3_to_a4(a4, a3);
for(j = 0; j < i + 1; j++) {
output[encLen++] = pgm_read_byte(&b64_alphabet[a4[j]]);
}
while((i++ < 3)) {
output[encLen++] = '=';
}
}
output[encLen] = '\0';
return encLen;
}
int base64_decode(char output, char input, int inputLen) { int i = 0, j = 0; int decLen = 0; unsigned char a3[3]; unsigned char a4[4];
while (inputLen--) {
if(*input == '=') {
break;
}
a4[i++] = *(input++);
if (i == 4) {
for (i = 0; i <4; i++) {
a4[i] = b64_lookup(a4[i]);
}
a4_to_a3(a3,a4);
for (i = 0; i < 3; i++) {
output[decLen++] = a3[i];
}
i = 0;
}
}
if (i) {
for (j = i; j < 4; j++) {
a4[j] = '\0';
}
for (j = 0; j <4; j++) {
a4[j] = b64_lookup(a4[j]);
}
a4_to_a3(a3,a4);
for (j = 0; j < i - 1; j++) {
output[decLen++] = a3[j];
}
}
output[decLen] = '\0';
return decLen;
}
int base64_enc_len(int plainLen) { int n = plainLen; return (n + 2 - ((n + 2) % 3)) / 3 * 4; }
int base64_dec_len(char * input, int inputLen) { int i = 0; int numEq = 0; for(i = inputLen - 1; input[i] == '='; i--) { numEq++; }
return ((6 * inputLen) / 8) - numEq;
}
inline void a3_to_a4(unsigned char a4, unsigned char a3) { a4[0] = (a3[0] & 0xfc) >> 2; a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4); a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6); a4[3] = (a3[2] & 0x3f); }
inline void a4_to_a3(unsigned char a3, unsigned char a4) { a3[0] = (a4[0] << 2) + ((a4[1] & 0x30) >> 4); a3[1] = ((a4[1] & 0xf) << 4) + ((a4[2] & 0x3c) >> 2); a3[2] = ((a4[2] & 0x3) << 6) + a4[3]; }
inline unsigned char b64_lookup(char c) { if(c >='A' && c <='Z') return c - 'A'; if(c >='a' && c <='z') return c - 71; if(c >='0' && c <='9') return c + 4; if(c == '+') return 62; if(c == '/') return 63; return -1; }
Pls anyone who can help to solve this error code as below?
C:\Users\user\Documents\Arduino\libraries\WaziDev\src\WaziDev.cpp:188:18: error: 'base64_enc_len' was not declared in this scope
int encLen = base64_enc_len(len);
^~~~~~
C:\Users\user\Documents\Arduino\libraries\WaziDev\src\WaziDev.cpp:190:5: error: 'base64_encode' was not declared in this scope
base64_encode(h, buf, len);
^~~~~
Arduino IDE 1.6.12
'base64_enc_len' was not declared in this scope