From b77380bad1150470751810d712e14b9d6f345512 Mon Sep 17 00:00:00 2001 From: Andrea Greco Date: Thu, 1 Mar 2018 01:03:44 +0100 Subject: [PATCH] Http client OTA (#553) --- examples/http_client_ota/Makefile | 4 + examples/http_client_ota/http_get.c | 134 +++++++++ examples/http_client_ota/test_file/blink.bin | Bin 0 -> 245392 bytes .../http_client_ota/test_file/blink.sha256 | 1 + extras/http_client_ota/component.mk | 10 + extras/http_client_ota/http_buffered_client.c | 219 +++++++++++++++ extras/http_client_ota/http_buffered_client.h | 29 ++ extras/http_client_ota/http_client_ota.c | 259 ++++++++++++++++++ extras/http_client_ota/http_client_ota.h | 56 ++++ 9 files changed, 712 insertions(+) create mode 100644 examples/http_client_ota/Makefile create mode 100644 examples/http_client_ota/http_get.c create mode 100644 examples/http_client_ota/test_file/blink.bin create mode 100644 examples/http_client_ota/test_file/blink.sha256 create mode 100644 extras/http_client_ota/component.mk create mode 100644 extras/http_client_ota/http_buffered_client.c create mode 100644 extras/http_client_ota/http_buffered_client.h create mode 100644 extras/http_client_ota/http_client_ota.c create mode 100644 extras/http_client_ota/http_client_ota.h diff --git a/examples/http_client_ota/Makefile b/examples/http_client_ota/Makefile new file mode 100644 index 0000000..8cbd731 --- /dev/null +++ b/examples/http_client_ota/Makefile @@ -0,0 +1,4 @@ +PROGRAM=http_ota +EXTRA_COMPONENTS=extras/rboot-ota extras/mbedtls extras/http_client_ota + +include ../../common.mk \ No newline at end of file diff --git a/examples/http_client_ota/http_get.c b/examples/http_client_ota/http_get.c new file mode 100644 index 0000000..6b1798a --- /dev/null +++ b/examples/http_client_ota/http_get.c @@ -0,0 +1,134 @@ +#include "espressif/esp_common.h" +#include "esp/uart.h" + +#include + +#include "FreeRTOS.h" +#include "task.h" + +#include "http_client_ota.h" +#include "ssid_config.h" + +#define vTaskDelayMs(ms) vTaskDelay((ms) / portTICK_PERIOD_MS) + +/* + * How to test + * cd test_file + * python -m SimpleHTTPServer 8080 + * fill missing define SERVER and PORT, in your private_ssid_config.h + * Ready for test. + */ + + +#define BINARY_PATH "/blink.bin" +#define SHA256_PATH "/blink.sha256" + +// Default +#define SERVER "192.168.1.30" +#define PORT "8080" + +#ifndef SERVER + #error "Server address is not defined define it:`192.168.X.X`" +#endif + +#ifndef PORT + #error "Port is not defined example:`8080`" +#endif + +static inline void ota_error_handling(OTA_err err) { + printf("Error:"); + + switch(err) { + case OTA_DNS_LOOKUP_FALLIED: + printf("DNS lookup has fallied\n"); + break; + case OTA_SOCKET_ALLOCATION_FALLIED: + printf("Impossible allocate required socket\n"); + break; + case OTA_SOCKET_CONNECTION_FALLIED: + printf("Server unreachable, impossible connect\n"); + break; + case OTA_SHA_DONT_MATCH: + printf("Sha256 sum does not fit downloaded sha256\n"); + break; + case OTA_REQUEST_SEND_FALLIED: + printf("Impossible send HTTP request\n"); + break; + case OTA_DOWLOAD_SIZE_NOT_MATCH: + printf("Dowload size don't match with server declared size\n"); + break; + case OTA_ONE_SLOT_ONLY: + printf("rboot has only one slot configured, impossible switch it\n"); + break; + case OTA_FAIL_SET_NEW_SLOT: + printf("rboot cannot switch between rom\n"); + break; + case OTA_IMAGE_VERIFY_FALLIED: + printf("Dowloaded image binary checsum is fallied\n"); + break; + case OTA_UPDATE_DONE: + printf("Ota has completed upgrade process, all ready for system software reset\n"); + break; + case OTA_HTTP_OK: + printf("HTTP server has response 200, Ok\n"); + break; + case OTA_HTTP_NOTFOUND: + printf("HTTP server has response 404, file not found\n"); + break; + } +} + +static void ota_task(void *PvParameter) +{ + // Wait until we have joined AP and are assigned an IP * + while (sdk_wifi_station_get_connect_status() != STATION_GOT_IP) + vTaskDelayMs(100); + + while (1) { + OTA_err err; + // Remake this task until ota work + err = ota_update((ota_info *) PvParameter); + + ota_error_handling(err); + + if(err != OTA_UPDATE_DONE) { + vTaskDelayMs(1000); + printf("\n\n\n"); + continue; + } + + vTaskDelayMs(1000); + printf("Delay 1\n"); + vTaskDelayMs(1000); + printf("Delay 2\n"); + vTaskDelayMs(1000); + printf("Delay 3\n"); + + printf("Reset\n"); + sdk_system_restart(); + } +} + +static ota_info info = { + .server = SERVER, + .port = PORT, + .binary_path = BINARY_PATH, + .sha256_path = SHA256_PATH, +}; + +void user_init(void) +{ + uart_set_baud(0, 115200); + printf("SDK version:%s\n", sdk_system_get_sdk_version()); + + struct sdk_station_config config = { + .ssid = WIFI_SSID, + .password = WIFI_PASS, + }; + + /* required to call wifi_set_opmode before station_set_config */ + sdk_wifi_set_opmode(STATION_MODE); + sdk_wifi_station_set_config(&config); + + xTaskCreate(ota_task, "get_task", 4096, &info, 2, NULL); +} diff --git a/examples/http_client_ota/test_file/blink.bin b/examples/http_client_ota/test_file/blink.bin new file mode 100644 index 0000000000000000000000000000000000000000..cb12f1ebccebdbd73f90b22f6487ac169c7ba052 GIT binary patch literal 245392 zcma%j3wRXO-S=EK2|0UBSX2VcOhR^pS(2RuvZ0A=mTa<-M98Wk_<@i`16UA&Y%N$XZEP1*YWva`1WL8lb_s5THdKg~izPKgUxW$@F-m}B=lh*mf?(h8dA>Z) zWao0`od5aX&i{7i-vX0g!dbiw{(8%JX3x*!)6)a8SB`78eHT*PN;j);CnTv{?Ksu8 zVXtZ+wpI>p%ST3@OcW{@W_|z2D~$X%`b6bUBlEle#ZoHuiWB(26xOESY)1RM;Lm16O_{{YCWtI6l;(H5I%6c`zrz%q6hU8T)AY7tzXP67qF@Gt4HP^s* zG;m5}wqx_SvMZX4rdJfBUUgjlI%VpU!x%N$|#+77=Rs4&;cm9_Hdp>qvNNz*)QoM$-8vh$iEFh#bMd7N6#g!?s;mh7ezrF_%{ ze%$$De0uNyp|Bk8Xc)DxPD^>UzM9m9{C{lX*%posa$Jbx*Rf4Jx6ZnW=bHrPd3l|? zNnqENH3{4%j#*c$2z(RIp01Z^^8LL zNIGNlGUZzcS1Qcs#9}7-)dO2>`|@?v=cj4Y_uRrzzQ(*$+=Tlw>rO{nWo^FZ^w;0( zow&J8sprmxT|8L3T~PPmLLOiT^Z{)KuoI*1ACEhqCGNEH4CCU-13#L=ev-H|g0b~R zZMtM&76z(h?`#|mLsTy74JmH>%VJ=n*B3pVPCC<=C0PqY(QS6ad?6s#30f7OlUXcw zCNZZ+lTfDF5ScW6D0%(1QVO zmZazYU@pHf7@hO$S1bCpYk;jcTD&jefFPWxJzI9>R?0v4h<;dYPj`Z z#NJ~YZ5P=uXs-v1=uDl=+H;eXTrOXYo=z)Oa+&^ROpcK~Pg^*bd8(s4!=BYINF!%* zmb7gOe;hbXB%wtpjJv2R!Hmv`WwInlmBj{ z&41)`?eM!TZNiBXb{~Br|6GffNElI3SjpAwKdrHE(EC(+j$23M2gE|p!3YZpiVbQB zZ3zy-eLAw#A+f*Hdu!DK+;-vZr*G}#nW7A#h6hhLNseFuYj{X8hlzNEx`H^nl{Tl^ zEr$>;r{tQbMnsF(n3q!SiyZLZ#(IqM1&zEFj2vJyb>J3gYUKNv>Omj=6)WyjaeBewUm%V6 zq%4YtoHQxKct7IRmzexQDgUE1>2#V!x)B}sJQ1Jn*0dZxF@M0--M~uG0RZLyxvhr- z=AE3>)#88Nc36qNt$qn?b;w+|%qFn;edwE!_Zgm9*q~{2Ts!_1XX9U01^&&g)8&&% zVis!J2bw!h+c@u*q{7CajMKm(Z{VKn^mLroFCxP1`g?-0!P!}xI~n|u5WSsQb`eVu z)tptCv@_5u#T~xHdVGpv0E3Rm=J$c;DDd2j-$=c#o6bId>WX%7%K_7gpI%;-@@fzF z7(Xo7iCCX;>}O@p<(D=I&YCs0km6$PK8^_F?)gGV_BvMVWY@BFO$;yyO=JCN*y2{FONZ$7-Z_K$Sv&U@*8_t$di9N&(^WNUoL&iQ|dT|NV(2EIu z-tf5wDK@!`^ND{i>+aN)Wvq{9q;5%hi&bVY_T_>?(m%Edebwn_A5(JqOSTL(GOB+W z?=rKeDL^$Gnc*@Lk!%xRV~=NqUuPtrMAGQ3lI+-Cw#z5~Qwz5nlUE&RI9_|EY!Hh) zR<<*M6F7I;Qrzt}AgO>NDYlz7zpRCyH;&-n`&@kbLL36IcsGIuZ8&Ibz zTvM7~O)F>CSjj8-Yb2t$-_vql&KaFE<%x+;glm$Nzgy;BTz7>>r~tm+ItpyU@x z>Ixf4gY*?EE|ZvZd;LYHxm5g-LInSdw|n;0U(8wL64^h}{yZcYd4OaQ+m8zTbq>NQ z^UsjG<=<(=Luy3uKbTX>x=8ryE&KjUJMtSX$LJ!lJzBu%enoQ;|0S#cyOYGnCzXPO z@!(ZxwJ{yCy;~mLC#UzzX|{a}bs2mG^eDtS>A~?_Q1ZTZx8x1bb@Q$Gbm+M?skno|B0)}lrk(4k<`QJ2eB2vy3>2QL$YztG_%vFQf! za9X1}%2{I%LVugTRKB6~@O_+7KB4vfT~j!ww|8}2D2c70*miFlUM4^rIC-x^wL%Ux zubg~R-@hxcl84XUcGxBPPiQbRVa!mGwJFt@0_;8)sjxD=pFXAhT{^5pW-543S$;SE z*YnE+s2DODGs7j8>oPW%j^!*fe4_ow8-~-`h&*32K=y#|<$1h=ic@9y^au!t4)xY@%(n>{eLt8F>kPa$gSn5lhSavHk8W$I)x zz7aqWZiIT*v@yf{blcF@Z7VmXsK*T<{)ykd@@3-#d$Y$iDdS5=5uu)+SrD8!e$D8V zvE_>kFJS3sn8k%jk;X`lp<)y>cJ<<-q{x~`PLd%Bs^AxZXxh~K>YEE9v&$p(yt;pA zZf51?FIvCUJSl`z-!=I7C&rfhW;_9@T;FfJ@DiP0E9M8&?Kqz>+Rm1#J%&F1iT-UX zuMFG2Yfv*Y9GfR&1_8nGw2RJx5Z<@NlF*PaJk0W=Lmn=5GP+l0JmDz0wUsdHw$;;0 z2^r?ccFipC?H~HMBnk)_Wy=fdww04|rF$DS@xjc4Xsakqg9k9H`o;{FH|UUs{O z?dZx<_dn44VZ>=-zei=tWxQ-+AERgW*4gtSmqj3SY?q^C@7Ji}E~7L*xaI8QzIQ=* zx`g)&7SG-1xnSg}+w*eR`##rc?lP5*(EL%I<}FTkrsl}~2>t%Q=(!T*_Vb|(Vr?$|)!Cr`k^>sK_luEBR7Mhe9e>89m&Vw`lh}+7H*Qi1*f$sF; zD93RZ4iK=rK|GQ+1Qk$|vg&M^z1@&do&^R7?Ws%J&?Y6~Ww+@{?A@UpqNbU*j%U@N z;C>-awdFajn5{iWjsI28#g~(Ya!AcNvko5r*w&WO{sqUnr^#E zvPRrd`QlY9+mNdcMW9CYS$2E10%bm~y}vKQ^i{vsSN*y_H9g@R(7wa}%7i@sE@r zu8H9dm~AkHm?79g?a#)iGYph~m07qmU-CXT4eK{->5MyNZy^qOGhnA~@d4k7pLXXe zXCFV~qSj|`uP{jJ{ya)?jdy>hg*XGu%NoN{mYqBVSy)1?%$f6~MoES{E-|4{sY{&8 z`j=?+toyX)5_|8GVnKTG5iV*>;dvV9=W!96lqu!7`f6^ukSB@zt#w-k`6LYYb_G8% zjkwIQgQCkUUQDLp4SDL2Q|)S!k7{C^z#nzb(#mFOwX-z(@^;$pZBcp0qP~;vd*>FB zyS~hgC`ujov5O;aCv0!bA2<+{Oz(U6ji{10e@rH|7q@O{PH{iUk(A$Vb$_XqeW}%6 z(i$#lt1fA-lub((Ze7w48$DS@IHJIR%sE1l<|ko8;_%`C5-+bB+}HcG_3Y!Y`rdhx zuSroOFH==?C~2wug!Oqg<<;5$kl3A6pq^vbzO(7z(9hSbZ`o*FB1>y5rDh@olbNyQ z!5M}0x1epx*o}>QK2ai!GHV9uTfB>fJc&#H5?WymuCUF_TW6iiE|tR%TNTXxVRTZ@ zl79H{OILs%!4z^|eHL?6T$sbSujBck%#Nb0Az!5o(V;MG z61{|Ml97l|6m3u9co~0P_}vJfEd8hP>5sx8Pi~G+KM9``K@_k!dT??y9*{6i+IGRo zBx(Ant&~;y_oABt2W)K0&55511eQ^b#09N zXAOa`@GWe2*DcVXbyoRB+M|;@*D~`YZrp2?cWZ$+X#ZU0Zfa3haq>>hTON_JBBjRg zUDi%0yR%xUF;-)hw`m^QG{6xqu%~EGihB!8F5JlBZ`50FfCli1X+s`H8Gb!{6<2Jd zgq;cbtHuE+6TWte`z(8i>*4EK7^_qvqYU;T_ zMmAs2@Uga$5@4-i%`E~MU-|n?uRlu07wsAAoe`~~4LvkW*$t3Ra8P*1tvEZ#jqvY#z}EpB zui?(V}ogg_!8TSN5gOkg)CBX#=ya`Lp{{? zXb40XK*-3`@H=o5XCKFlIr+Ufp&nQ<7e32WAUwu2a>?=sad)p4>m3QsbcN)jIu*D; zhZ1=?C@_wn*`SEWDw7H^`kb^cBxL}zAy9z{`G7N^bW{V@*t5jhm57A82>UYCIA3`O z$92Ae)3t9{J6oochZ@i)YA@cUom#5Bv5S5E3SLn1_-=()KvFy9Kc^{``hGbk{e{Fi zVRzD&E~AJ*93^v|GV~v+2D({~;UWGs2+FWS6q<@5jghA$m=te%_^#b@L|gwk&UKAW zd*hs{Q}x(rkn*~o*ZKVrcfyKEo@Lpe(BY3f8Sg4VlLN-SE}?g_ctdVtJ`kjq+Wzx8vN{9{il(>Wsp^PZENt4~s$S;#hXVe`egL>HPo|=Xze= zK`-Xgiz>=i*Vo3_Sp%SV5eNydY+G&*-{*;Cm^rg

?Jr21H z|2M;0DLM3K*H{tf0aEu~iu{^BL(ZoycA}O9oZUBYf5}^D~#pf7Vj} zmokpFTwpMbian1B zzpI`45uIPhWTw51j1&8`)Gm7yQ}*#NZk`b8y66}OP3{lrwUcK*x(vAgbJp&*xZb;m zZ~IVwdstTv0c69Fz@sU>1U?cWl0%%mNj!3R*t3iFXoP;=UF=-;Ouvo|BN+g=QdU%1 zW;pfN;rxP#b6#&jq-ayHGle#&;y|}vB@%nrLTsJZ1PYD5T&rgnu@w~-5sv!6T|$1Q z1gA81loB*xl=lt?_Ta3Zt9rx3R!;eS=Xsihz#Wf~*gU(7-x!hl5kG2ynPC><(B(Ce zo#+Y?uJbm$#>f#J8Jr^{S>8H~m9wuLS?~T&o0nprK*A0;;hrQ(qLnIcnz?nku{f0!we*>O_I!wKgIk=q= zK59zXJCYT}2Il(SFd|N|jTqeuX`w;l+|*;X6>6@nF>R^)5el@L$rQDx%BzRn=QXhv zEmJ+qPQ3BVB8Gf^_}%DL;{m?9Uaxfwe8n`e3>@iTdZ%9u70TH`yg0*4UX+NbeW-&LgV4* z`5r@8zkDa1QWZPb>i-TR2LV>@zJfqgJ13V@OjohN1~#@%f713KMo@BR<%r5jq$0f} zlTO#?r5U9x$Crg-cDk|E%w!i%$u6H%VZ<~N?WIp8ob)Z5rOz#KZ>%0ATsEr}D;wb& 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

fAR^F9C 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

AADO6)5dz0d3e%@asM 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 Iu-DlB4WQpoe*gdg literal 0 HcmV?d00001 diff --git a/examples/http_client_ota/test_file/blink.sha256 b/examples/http_client_ota/test_file/blink.sha256 new file mode 100644 index 0000000..5c05557 --- /dev/null +++ b/examples/http_client_ota/test_file/blink.sha256 @@ -0,0 +1 @@ +57dda900027355de85f0de9e6c966e3c4c16741d8eed134d209c0fb6304cf852 diff --git a/extras/http_client_ota/component.mk b/extras/http_client_ota/component.mk new file mode 100644 index 0000000..4cebd16 --- /dev/null +++ b/extras/http_client_ota/component.mk @@ -0,0 +1,10 @@ +# Component makefile for extras/http_client_ota + +# Expected anyone using http_client_ota includes it as 'http_client_ota/ota' +INC_DIRS += $(http_client_ota_ROOT) + +# args for passing into compile rule generation +http_client_ota_INC_DIR = $(http_client_ota_ROOT) +http_client_ota_SRC_DIR = $(http_client_ota_ROOT) + +$(eval $(call component_compile_rules,http_client_ota)) diff --git a/extras/http_client_ota/http_buffered_client.c b/extras/http_client_ota/http_buffered_client.c new file mode 100644 index 0000000..a0d79bf --- /dev/null +++ b/extras/http_client_ota/http_buffered_client.c @@ -0,0 +1,219 @@ +#include +#include +#include +#include +#include +#include + +#include "lwip/err.h" +#include "lwip/sockets.h" +#include "lwip/sys.h" +#include "lwip/netdb.h" +#include "lwip/dns.h" + +#include "http_buffered_client.h" + +#define MAX_REQUEST_SIZE (152 / sizeof(uint32_t)) +#define vTaskDelayMs(ms) vTaskDelay((ms) / portTICK_PERIOD_MS) + +typedef void (*handle_http_token)(char *); + +struct http_token_table { + char * token; + handle_http_token http_tock_cb; +}; + +// Response struct +struct HTTP_response { + unsigned int response_code; + unsigned int length; +}; + +/** + * \addtogroup http_buffer_client_internal + * Http Request + */ +const char *req = + "GET %s HTTP/1.1\r\n" + "Host: %s \r\n" + "User-Agent: esp-open-rtos/0.1 esp8266\r\n" + "Connection: close\r\n" + "\r\n"; + +static uint32_t request[MAX_REQUEST_SIZE]; + +static const struct addrinfo hints = { + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM, +}; + +static struct HTTP_response http_reponse; + +// HTTP Header Token, add here function and then register it in HTTP Table callback +static void http_handle_cb_ContentLength(char *token) +{ + token += 16; // strlen("Content-Length:"), skip useless part + while (*token) { + if (isdigit((int) *token)) + http_reponse.length = (unsigned int) strtol(token, &token, 10); + else + token++; + } +} + +static inline void parse_http_header_HTTP_STATUS(char *token) +{ + token += 8; // Skip HTTP/1.0 + + while (*token) { + if (isdigit((int) *token)) + http_reponse.response_code = (unsigned int) strtol(token, &token, 10); + else + token++; + } +} + +// HTTP Token Hanling callback +struct http_token_table HTTP_HEADER_TOKEN[] = { + { .token = "Content-Length", .http_tock_cb = http_handle_cb_ContentLength }, +}; + +static inline void parse_http_header(char *header) +{ + char *str1, *str2, *token, *subtoken, *saveptr1, *saveptr2; + const char line_split[] = "\r\n", sub_chart[] = ":"; + unsigned int j, i; + + for (j = 1, str1 = header;; j++, str1 = NULL) { + token = strtok_r(str1, line_split, &saveptr1); + if (token == NULL) + break; + + str2 = token; + subtoken = strtok_r(str2, sub_chart, &saveptr2); + if (subtoken == NULL) + break; + + if (j == 1) { + // Is HTTP Header, response, HTTP Version and status + parse_http_header_HTTP_STATUS(token); + continue; + } + + for (i = 0; i < sizeof(HTTP_HEADER_TOKEN) / sizeof(struct http_token_table); i++) + if (!strcmp(subtoken, HTTP_HEADER_TOKEN[i].token)) + HTTP_HEADER_TOKEN[i].http_tock_cb(token); + + } +} + +HTTP_Client_State HttpClient_dowload(Http_client_info *info) +{ + struct addrinfo *res; + unsigned int tot_http_pdu_rd, read_byte, full; + int err, sock; + char *wrt_ptr; + + err = getaddrinfo(info->server, info->port, &hints, &res); + + if (err != 0 || res == NULL) { + if (res) + freeaddrinfo(res); + return HTTP_DNS_LOOKUP_FALLIED; + } + + sock = socket(res->ai_family, res->ai_socktype, 0); + if (sock < 0) { + freeaddrinfo(res); + return HTTP_SOCKET_ALLOCATION_FALLIED; + } + + if (connect(sock, res->ai_addr, res->ai_addrlen) != 0) { + close(sock); + freeaddrinfo(res); + return HTTP_SOCKET_CONNECTION_FALLIED; + } + + // Release address memory + freeaddrinfo(res); + + // Alloc memory for request + sprintf((char *) request, req, info->path, info->server); + if (write(sock, (char *) request, strlen((char *) request)) < 0) { + close(sock); + return HTTP_REQUEST_SEND_FALLIED; + } + + tot_http_pdu_rd = 0; + wrt_ptr = info->buffer; + full = 0; + + // Ping wdog + vTaskDelayMs(250); + do { + int free_buff_space; + + free_buff_space = info->buffer_size - full; + read_byte = read(sock, wrt_ptr, free_buff_space); + + // Update buffer property + wrt_ptr += read_byte; + full += read_byte; + + if (tot_http_pdu_rd == 0) { + // Is fist chunk, then it contains http header, parse it. + unsigned int header_len, pdu_size; + char *header, *pdu; + + pdu = strstr(info->buffer, "\r\n\r\n"); + + if (pdu != NULL) + pdu += 4; // Offset by 4 bytes to start of content + else // Not all HTTP Header has been read, then continue read + continue; + + header_len = pdu - info->buffer + 4; + + header = malloc(header_len + 1); // NULL string terminator + + memset(header, 0, header_len + 1); + memcpy(header, info->buffer, header_len); + + parse_http_header(header); + // Release useless memory + free(header); + + // Move memory + pdu_size = wrt_ptr - pdu; + + memmove(info->buffer, pdu, pdu_size); + wrt_ptr = (info->buffer + pdu_size); + + full = pdu_size; + tot_http_pdu_rd = pdu_size; + + if (http_reponse.response_code != HTTP_OK) + goto err_label; + + continue; + } + tot_http_pdu_rd += read_byte; + + if (full == info->buffer_size) { + info->buffer_full_cb(info->buffer, full); + + memset(info->buffer, 0, info->buffer_size); + wrt_ptr = info->buffer; + full = 0; + vTaskDelayMs(50); + } + } while (read_byte > 0); + + info->final_cb(info->buffer, full); + if (tot_http_pdu_rd != http_reponse.length) + http_reponse.response_code = HTTP_DOWLOAD_SIZE_NOT_MATCH; + +err_label: + close(sock); + return http_reponse.response_code; +} /* HttpClient_dowload */ diff --git a/extras/http_client_ota/http_buffered_client.h b/extras/http_client_ota/http_buffered_client.h new file mode 100644 index 0000000..cfeb8da --- /dev/null +++ b/extras/http_client_ota/http_buffered_client.h @@ -0,0 +1,29 @@ +#ifndef HTTP_BUFFERED_CLIENT +#define HTTP_BUFFERED_CLIENT + +typedef unsigned int (*http_final_cb)(char *buff, uint16_t size); + +typedef enum { + HTTP_DNS_LOOKUP_FALLIED = 1, + HTTP_SOCKET_ALLOCATION_FALLIED = 2, + HTTP_SOCKET_CONNECTION_FALLIED = 3, + HTTP_SHA_DONT_MATCH = 4, + HTTP_REQUEST_SEND_FALLIED = 5, + HTTP_DOWLOAD_SIZE_NOT_MATCH = 6, + HTTP_OK = 200, + HTTP_NOTFOUND = 404, +} HTTP_Client_State; + +typedef struct { + char * server; + char * port; + char * path; + char * buffer; + uint16_t buffer_size; + http_final_cb buffer_full_cb; + http_final_cb final_cb; +} Http_client_info; + +HTTP_Client_State HttpClient_dowload(Http_client_info *info); + +#endif // ifndef HTTP_BUFFERED_CLIENT diff --git a/extras/http_client_ota/http_client_ota.c b/extras/http_client_ota/http_client_ota.c new file mode 100644 index 0000000..f7a2be9 --- /dev/null +++ b/extras/http_client_ota/http_client_ota.c @@ -0,0 +1,259 @@ +#include +#include +#include +#include +#include +#include "arch/cc.h" +#include "lwip/err.h" +#include "lwip/sockets.h" +#include "lwip/sys.h" +#include "lwip/netdb.h" +#include "lwip/dns.h" +#include +#include +#include +#include +#include "mbedtls/sha256.h" +#include "http_client_ota.h" +#include "rboot-api.h" +#include "rboot.h" +#define MODULE "OTA" + +#if defined(DEBUG) +# ifndef MODULE +# error "Module not define" +# endif + + # define DEBUG_PRINT(fmt, args ...) \ + printf("[%s]\t" fmt "\n", MODULE, ## args) +#else + # define DEBUG_PRINT(fmt, args ...) /* Don't do anything in release builds */ +#endif + +#define MAX_IMAGE_SIZE 0x100000 /*1MB images max at the moment */ +#define READ_BUFFER_LEN 512 + +#define SHA256_SIZE_BIN 32 +#define SHA256_SIZE_STR SHA256_SIZE_BIN * 2 +#define SHA256_CONV_STEP_SIZE 4 + +#if SECTOR_SIZE % READ_BUFFER_LEN != 0 +# error "Incompatible SECTOR SIZE, with you current READ_BUFFER" +#endif + +#define SECTOR_BUFFER_SIZE (SECTOR_SIZE) +#define vTaskDelayMs(ms) vTaskDelay((ms) / portTICK_PERIOD_MS) + +static ota_info *ota_inf; +static mbedtls_sha256_context *sha256_ctx; + +static uint32_t flash_offset; +static uint32_t flash_limits; + +static unsigned char *SHA256_output; +static uint16_t *SHA256_dowload; +static char *SHA256_str; +static char *SHA256_wrt_ptr; + +/** + * CallBack called from Http Buffered client, for ota firmaware + */ +static unsigned int ota_firmaware_dowload_callback(char *buf, uint16_t size) +{ + if (ota_inf->sha256_path != NULL) + mbedtls_sha256_update(sha256_ctx, (const unsigned char *) buf, size); + + if (flash_offset + size > flash_limits) { + DEBUG_PRINT("Flash Limits override"); + return -1; + } + + // Ready for flash device, the erase NANDFLASH Block + if (flash_offset % SECTOR_SIZE == 0) { + unsigned int sector; + + sector = flash_offset / SECTOR_SIZE; + sdk_spi_flash_erase_sector(sector); + } + + // Write into Flash + sdk_spi_flash_write(flash_offset, (uint32_t *) buf, size); + flash_offset += size; + return 1; +} + +static unsigned int SHA256_check_callback(char *buf, uint16_t size) +{ + int Current_SHA_Size; + + // Check that str does not contains other streing with SHA256 + if (size > SHA256_SIZE_STR) + size = SHA256_SIZE_STR; + + Current_SHA_Size = SHA256_wrt_ptr - (char *) SHA256_str; + + if (!(Current_SHA_Size > SHA256_SIZE_STR)) { + memcpy(SHA256_wrt_ptr, buf, size); + SHA256_wrt_ptr += size; + } + return 1; +} + +static void convert_SHA256_Str_TO_uint32(char *str, uint16_t *final_sha_bin) +{ + char tmp[SHA256_CONV_STEP_SIZE + 1]; + char *wrt_ptr; + int i; + + wrt_ptr = str; + for (i = 0; i < SHA256_SIZE_STR / SHA256_CONV_STEP_SIZE; i++) { + uint16_t val; + memset(tmp, 0, sizeof(tmp)); + memcpy(tmp, wrt_ptr, SHA256_CONV_STEP_SIZE); + + val = strtol(tmp, NULL, 16); + + final_sha_bin[i] = LWIP_PLATFORM_HTONS(val); + + wrt_ptr += SHA256_CONV_STEP_SIZE; + } +} + +OTA_err ota_update(ota_info *ota_info_par) +{ + Http_client_info http_inf; + rboot_config rboot_config; + HTTP_Client_State err; + int slot; + + ota_inf = ota_info_par; + + // Malloc memory for work + http_inf.buffer = malloc(SECTOR_BUFFER_SIZE); + http_inf.buffer_size = SECTOR_BUFFER_SIZE; + http_inf.server = ota_inf->server; + http_inf.port = ota_inf->port; + + // Check memory alignement, must be aligned + if ((unsigned int) http_inf.buffer % sizeof(unsigned int)) { + DEBUG_PRINT("Malloc return Unaligned memory"); + free(http_inf.buffer); + } + + if (ota_inf->sha256_path != NULL) { + sha256_ctx = malloc(sizeof(mbedtls_sha256_context)); + SHA256_output = malloc(SHA256_SIZE_BIN); + SHA256_dowload = malloc(SHA256_SIZE_BIN); + SHA256_str = malloc(SHA256_SIZE_STR + 1); + SHA256_wrt_ptr = SHA256_str; + SHA256_str[SHA256_SIZE_STR] = '\0'; + mbedtls_sha256_init(sha256_ctx); + } + + DEBUG_PRINT("HTTP client task starting"); + + rboot_config = rboot_get_config(); + slot = (rboot_config.current_rom + 1) % rboot_config.count; + + DEBUG_PRINT("Image will be saved in OTA slot %d", slot); + if (slot == rboot_config.current_rom) { + DEBUG_PRINT("Only one OTA slot is configured!"); + err = OTA_ONE_SLOT_ONLY; + goto dealloc_all; + } + + /* Validate the OTA slot parameter */ + if (rboot_config.current_rom == slot || rboot_config.count <= slot) + DEBUG_PRINT("Current rom set to unknow value:%d", rboot_config.current_rom); + + // Calculate room limits + flash_offset = rboot_config.roms[slot]; + flash_limits = flash_offset + MAX_IMAGE_SIZE; + + if (ota_inf->sha256_path != NULL) { + // Setup for dowload sha256 + http_inf.path = ota_inf->sha256_path; + http_inf.final_cb = SHA256_check_callback; + http_inf.buffer_full_cb = SHA256_check_callback; + + memset(SHA256_dowload, 0, SHA256_SIZE_BIN); + memset(SHA256_str, 0, SHA256_SIZE_STR); + + err = HttpClient_dowload(&http_inf); + + // Check if dowload success + if (err != HTTP_OK) + goto dealloc_all; + + convert_SHA256_Str_TO_uint32(SHA256_str, SHA256_dowload); + } + + // Ping Wdog + vTaskDelayMs(250); + + // Dowload Firmaware + http_inf.path = ota_inf->binary_path; + http_inf.final_cb = ota_firmaware_dowload_callback; + http_inf.buffer_full_cb = ota_firmaware_dowload_callback; + if (ota_inf->sha256_path != NULL) + mbedtls_sha256_starts(sha256_ctx, 0); // Start SHA256, not SHA224 + + err = HttpClient_dowload(&http_inf); + + if (err != HTTP_OK) + goto dealloc_all; + + if (ota_inf->sha256_path != NULL) { + char com_res; + mbedtls_sha256_finish(sha256_ctx, SHA256_output); + mbedtls_sha256_free(sha256_ctx); + + com_res = !memcmp((void *) SHA256_output, (void *) SHA256_dowload, SHA256_SIZE_BIN); + if (!com_res) { + DEBUG_PRINT("SHA256 is not equal"); + err = HTTP_SHA_DONT_MATCH; + goto dealloc_all; + } + } + // Ping watch DOG + vTaskDelayMs(500); + { + #define MESSAGE_MAX 120 + unsigned int Rboot_verified, boot_dimension; + char error_message[MESSAGE_MAX]; + + memset(error_message, 0, sizeof(error_message)); + // Start verify + Rboot_verified = rboot_verify_image(rboot_config.roms[slot], &boot_dimension, (const char **) &error_message); + if (Rboot_verified) { + // Rom OK, call final callback for let inform user that all is ready for switch and reset. + + vPortEnterCritical(); + if (!rboot_set_current_rom(slot)) { + vPortExitCritical(); + err = OTA_FAIL_SET_NEW_SLOT; + goto dealloc_all; + } + vPortExitCritical(); + + // Update success, software return HTTP_200 + err = OTA_UPDATE_DONE; + goto dealloc_all; + } else { + DEBUG_PRINT("%s", error_message); + err = OTA_IMAGE_VERIFY_FALLIED; + goto dealloc_all; + } + } + +dealloc_all: + free(http_inf.buffer); + + if (ota_inf->sha256_path != NULL) { + free(sha256_ctx); + free(SHA256_str); + free(SHA256_output); + free(SHA256_dowload); + } + return err; +} /* ota_update */ diff --git a/extras/http_client_ota/http_client_ota.h b/extras/http_client_ota/http_client_ota.h new file mode 100644 index 0000000..56c7ea0 --- /dev/null +++ b/extras/http_client_ota/http_client_ota.h @@ -0,0 +1,56 @@ +#ifndef HTTP_OTA_H +#define HTTP_OTA_H + +/** + * @file ota_update.h + * @author Andrea Greco + * @brief File containing struct and function ota update + * File containing struct and function ota update. + * Ota use remote HTTP server in internet, for dowload Firmaware and sha256 file. + * Firmaware is compiled file stripped, contained in folder firmaware. + * Sha256 is a file that contains a sha256, of Firmaware. + * If enabled 256 is checked during firmaware download. + */ +#include "http_buffered_client.h" + +typedef enum { + // Keep this aligned with \ref HTTP_Client_State + OTA_DNS_LOOKUP_FALLIED = HTTP_DNS_LOOKUP_FALLIED,/**< DNS lookup has fallied */ + OTA_SOCKET_ALLOCATION_FALLIED = HTTP_SOCKET_ALLOCATION_FALLIED,/**< Impossible allocate required socket */ + OTA_SOCKET_CONNECTION_FALLIED = HTTP_SOCKET_CONNECTION_FALLIED,/**< Server unreachable, impossible connect */ + OTA_SHA_DONT_MATCH = HTTP_SHA_DONT_MATCH,/** Sha256 sum does not fit downloaded sha256 */ + OTA_REQUEST_SEND_FALLIED = HTTP_REQUEST_SEND_FALLIED,/**< Impossible send HTTP request */ + OTA_DOWLOAD_SIZE_NOT_MATCH = HTTP_DOWLOAD_SIZE_NOT_MATCH, /**< Dowload size don't match with server declared size */ + + // Ota error + OTA_ONE_SLOT_ONLY = 20,/**< rboot has only one slot configured, impossible switch it */ + OTA_FAIL_SET_NEW_SLOT = 21,/**< rboot cannot switch between rom */ + OTA_IMAGE_VERIFY_FALLIED = 22,/**< Dowloaded image binary checsum is fallied */ + OTA_UPDATE_DONE = 23, /**< Ota has completed upgrade process, all ready for system software reset */ + + OTA_HTTP_OK = 200,/** HTTP server has response 200, Ok */ + OTA_HTTP_NOTFOUND = 404,/** HTTP server has response 404, file not found */ +} OTA_err; + + +/** + * \brief Create ota info. + * Struct that contains all info for start ota. + */ +typedef struct { + char *server; /**< Server domain */ + char *port; /**< Server port */ + char *binary_path; /**< Server Path dowload new update binary */ + char *sha256_path; /**< Server Path of SHA256 sum for check binary, could be NULL, check will be skipped */ +} ota_info; + +/** + * \brief Start ota update. + * Start Ota update. + * Ota_info contains all information about file to download, port, server. + * \param ota_info_par ptr to ota info. + * In case of success, and ota update is right done, \ref finish_cb is called before ESP8266 reset. + * \return http server return Code, check out \ref HTTP_Client_State for all code. + */ +OTA_err ota_update(ota_info *ota_info_par); +#endif // ifndef HTTP_OTA_H