Files
mixly3-server/arduino-libs/arduino-cli/libraries/URLCode_for_Arduino/src/URLCode.cpp

113 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _URLCODE_CPP_
#define _URLCODE_CPP_
#include "URLCode.h"
int URLCode :: hex2dec(char c){
if ('0' <= c && c <= '9')
{
return c - '0';
}
else if ('a' <= c && c <= 'f')
{
return c - 'a' + 10;
}
else if ('A' <= c && c <= 'F')
{
return c - 'A' + 10;
}
else
{
return -1;
}
}
char URLCode :: dec2hex(short int c)
{
if (0 <= c && c <= 9)
{
return c + '0';
}
else if (10 <= c && c <= 15)
{
return c + 'A' - 10;
}
else
{
return -1;
}
}
// Chinese 编码一个url
// English Encode URLCode
void URLCode :: urlencode()
{
urlcode = "";
int i = 0;
int len = strcode.length();
for (i = 0; i < len; ++i)
{
wdtFeed();
char c = strcode[i];
if ( ('0' <= c && c <= '9') ||
('a' <= c && c <= 'z') ||
('A' <= c && c <= 'Z') ||
c == '/' || c == '.')
{
urlcode += String(c);
}
else
{
int j = (short int)c;
if (j < 0)
j += 256;
int i1, i0;
i1 = j / 16;
i0 = j - i1 * 16;
urlcode += String('%');
urlcode += String((char)dec2hex(i1));
urlcode += String((char)dec2hex(i0));
}
}
}
// Chinese 解码url
// English Decode URLCode
void URLCode :: urldecode()
{
strcode = "";
int i = 0;
int len = urlcode.length();
for (i = 0; i < len; ++i)
{
wdtFeed();
char c = urlcode[i];
if (c != '%') {
strcode += String(c);
} else {
char c1 = urlcode[++i];
char c0 = urlcode[++i];
int num = 0;
num = hex2dec(c1) * 16 + hex2dec(c0);
strcode += String((char)num);
}
}
}
// Chinese 喂看门狗
// English Feed Watchdog)
void URLCode :: wdtFeed(){
// 喂看门狗代码 如果需要解码的URL太过长会导致芯片以为运行出错所以需要进行喂狗
// 如果是 ESP8266 只需要 #define ESP8266 即可 其他芯片的喂狗代码请自行添加
#ifdef ESP8266
ESP.wdtFeed();
#endif
}
#endif