diff --git a/lastEnumTemplate.txt b/lastEnumTemplate.txt new file mode 100644 index 000000000..f2e93ae21 --- /dev/null +++ b/lastEnumTemplate.txt @@ -0,0 +1,7 @@ +{ 17822728f value == '1' } + Ok +{ 2.121830e-304lif value == '0' } + Bad +{-9.255963e+61lse } + Unknown +{-9.255963e+61ndif } \ No newline at end of file diff --git a/src/cmnds/cmd_main.c b/src/cmnds/cmd_main.c index c7b630e31..6211ee8b5 100644 --- a/src/cmnds/cmd_main.c +++ b/src/cmnds/cmd_main.c @@ -503,7 +503,20 @@ static commandResult_t CMD_CreateAliasForCommand(const void* context, const char } alias = Tokenizer_GetArg(0); +#if 0 ocmd = Tokenizer_GetArgFrom(1); +#else + while (*args && isWhiteSpace(*args)) { + args++; + } + while (*args && !isWhiteSpace(*args)) { + args++; + } + while (*args && isWhiteSpace(*args)) { + args++; + } + ocmd = args; +#endif return CMD_CreateAliasHelper(alias, ocmd); } diff --git a/src/cmnds/cmd_script.c b/src/cmnds/cmd_script.c index 764051bbe..ad43310e9 100644 --- a/src/cmnds/cmd_script.c +++ b/src/cmnds/cmd_script.c @@ -245,8 +245,7 @@ typedef struct scriptInstance_s { struct scriptInstance_s *next; } scriptInstance_t; -#define MAX_SCRIPT_LINE 512 - +int g_scrBufferSize = 0; char *g_scrBuffer = 0; int svm_deltaMS; scriptFile_t *g_scriptFiles = 0; @@ -399,8 +398,12 @@ void SVM_RunThread(scriptInstance_t *t) { // skip empty lines and skip labels if(len > 0 && start[len-1] != ':') { - if(len >= MAX_SCRIPT_LINE) { - len = MAX_SCRIPT_LINE-1; + if(len >= g_scrBufferSize) { + g_scrBufferSize = len + 256; + g_scrBuffer = (char*)realloc(g_scrBuffer, g_scrBufferSize+1); + } + if (g_scrBuffer == NULL) { + return; } memcpy(g_scrBuffer,start,len); g_scrBuffer[len] = 0; @@ -426,7 +429,8 @@ void SVM_RunThreads(int deltaMS) { svm_deltaMS = deltaMS; if(g_scrBuffer == 0) { - g_scrBuffer = malloc(MAX_SCRIPT_LINE); + g_scrBufferSize = 256; + g_scrBuffer = malloc(g_scrBufferSize + 1); } g_activeThread = g_scriptThreads; diff --git a/src/driver/drv_ir2.c b/src/driver/drv_ir2.c new file mode 100644 index 000000000..94fac6f4c --- /dev/null +++ b/src/driver/drv_ir2.c @@ -0,0 +1,339 @@ + +#ifndef PLATFORM_BL602 + +#include "drv_local.h" +#include "../new_common.h" + +#if PLATFORM_BEKEN + +#include "include.h" +#include "arm_arch.h" +#include "../new_pins.h" +#include "../new_cfg.h" +#include "../logging/logging.h" +#include "../obk_config.h" +#include "../cmnds/cmd_public.h" +#include "bk_timer_pub.h" +#include "drv_model_pub.h" + +#include +//#include "pwm.h" +#include "pwm_pub.h" + +#include "../../beken378/func/include/net_param_pub.h" +#include "../../beken378/func/user_driver/BkDriverPwm.h" +#include "../../beken378/func/user_driver/BkDriverI2c.h" +#include "../../beken378/driver/i2c/i2c1.h" +#include "../../beken378/driver/gpio/gpio.h" +#include "../../beken378/driver/pwm/pwm.h" +#if PLATFORM_BK7231N +#include "../../beken378/driver/pwm/pwm_new.h" + + + +#define REG_PWM_BASE_ADDR (0x00802B00UL) +#define PWM_CHANNEL_NUMBER_ALL 6 +#define PWM_CHANNEL_NUMBER_MAX (PWM_CHANNEL_NUMBER_ALL - 1) +#define PWM_CHANNEL_NUMBER_MIN 0 + +#define REG_PWM_GROUP_ADDR(x) (REG_PWM_BASE_ADDR + (0x40 * x)) + +#define REG_PWM_GROUP_CTRL_ADDR(x) (REG_PWM_GROUP_ADDR(x) + 0x00 * 4) +#define REG_PWM_CTRL_MASK 0xFFFFFFFFUL +#define REG_PWM_GROUP_CTRL(x) (*((volatile unsigned long *) REG_PWM_GROUP_CTRL_ADDR(x))) + +#define PWM_GROUP_MODE_SET_BIT(x) (8*x) + +#define PWM_GROUP_PWM_ENABLE_BIT(x) (8*x + 3) +#define PWM_GROUP_PWM_ENABLE_MASK(x) (1 <"); commandLen = http_getArg(request->url, "cmd", tmpA, sizeof(tmpA)); + addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP, "http_fn_cmd_tool: len %i",commandLen); if (commandLen) { poststr(request, "
"); // all log printfs made by command will be sent also to request diff --git a/src/httpserver/http_tcp_server.c b/src/httpserver/http_tcp_server.c index be5622447..a42acec2e 100644 --- a/src/httpserver/http_tcp_server.c +++ b/src/httpserver/http_tcp_server.c @@ -91,7 +91,25 @@ static void tcp_client_thread(beken_thread_arg_t arg) request.received = buf; request.receivedLenmax = INCOMING_BUFFER_SIZE - 2; request.responseCode = HTTP_RESPONSE_OK; - request.receivedLen = recv(fd, request.received, request.receivedLenmax, 0); + request.receivedLen = 0; + while (1) { + int remaining = request.receivedLenmax - request.receivedLen; + int received = recv(fd, request.received + request.receivedLen, remaining, 0); + if (received <= 0) { + break; + } + request.receivedLen += received; + if (received < remaining) { + break; + } + // grow by 1024 + request.receivedLenmax += 1024; + request.received = (char*)realloc(request.received, request.receivedLenmax+2); + if (request.received == NULL) { + // no memory + return; + } + } request.received[request.receivedLen] = 0; request.reply = reply; diff --git a/src/obk_config.h b/src/obk_config.h index 9dc425af7..08d114b3d 100644 --- a/src/obk_config.h +++ b/src/obk_config.h @@ -72,6 +72,7 @@ #define ENABLE_DRIVER_SSDP 1 #define ENABLE_DRIVER_ADCBUTTON 1 #define ENABLE_DRIVER_SM15155E 1 +#define ENABLE_DRIVER_IR2 0 #elif PLATFORM_BL602 @@ -139,6 +140,7 @@ //#define ENABLE_DRIVER_BMPI2C 1 #define ENABLE_DRIVER_DDP 1 #define ENABLE_DRIVER_SSDP 1 +#define ENABLE_DRIVER_IR2 0 #elif PLATFORM_LN882H diff --git a/src/selftest/selftest_cfg_via_http.c b/src/selftest/selftest_cfg_via_http.c index 47076caa7..75121f354 100644 --- a/src/selftest/selftest_cfg_via_http.c +++ b/src/selftest/selftest_cfg_via_http.c @@ -3,6 +3,58 @@ #include "selftest_local.h" #include "../httpserver/new_http.h" +char g_loremIpsum[] = "Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum."; +char *g_savedArgs = 0; +char g_loremIpsum2[] = "Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum."; + + +char g_loremIpsum3[] = "Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum.""Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." +"Lorem_ipsum_dolor_sit_amet,_consectetur_adipiscing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum."; + +static commandResult_t CMD_SelfTest_SaveArgs(const void* context, const char* cmd, const char* args, int cmdFlags) { + + if (g_savedArgs) + free(g_savedArgs); + g_savedArgs = strdup(args); + + return CMD_RES_OK; +} + void Test_CFG_Via_HTTP() { const char *mqtt_userName = "MyMQTTUser"; SIM_ClearOBK(0); @@ -47,6 +99,40 @@ void Test_CFG_Via_HTTP() { SELFTEST_ASSERT_JSON_VALUE_STRING(0, "SSID1", "newApName"); // causes assert //SELFTEST_ASSERT_JSON_VALUE_STRING(0, "SSID1", "newAcName"); + + CMD_RegisterCommand("SimSaveArgs", CMD_SelfTest_SaveArgs, 0); + + + Test_FakeHTTPClientPacket_JSON("cm?cmnd=SimSaveArgs%20123"); + SELFTEST_ASSERT_STRING(g_savedArgs,"123"); + Test_FakeHTTPClientPacket_JSON_VA("cm?cmnd=SimSaveArgs%%20%s", g_loremIpsum); + printf("Lorem len: %i", strlen(g_savedArgs)); + SELFTEST_ASSERT_STRING(g_savedArgs, g_loremIpsum); + Test_FakeHTTPClientPacket_JSON_VA("cm?cmnd=SimSaveArgs%%20%s", g_loremIpsum2); + printf("Lorem2 len: %i", strlen(g_savedArgs)); + SELFTEST_ASSERT_STRING(g_savedArgs, g_loremIpsum2); + Test_FakeHTTPClientPacket_JSON_VA("cm?cmnd=SimSaveArgs%%20%s", g_loremIpsum3); + printf("Lorem3 len: %i", strlen(g_savedArgs)); + SELFTEST_ASSERT_STRING(g_savedArgs, g_loremIpsum3); + + CMD_ExecuteCommand("SimSaveArgs ok tester", 0); + SELFTEST_ASSERT_STRING(g_savedArgs, "ok tester"); + SELFTEST_ASSERT(strlen(g_savedArgs) == strlen("ok tester")); + + char tmp[8192 * 8]; + sprintf(tmp, "alias lorem SimSaveArgs %s", g_loremIpsum); + CMD_ExecuteCommand(tmp, 0); + CMD_ExecuteCommand("lorem", 0); + SELFTEST_ASSERT_STRING(g_savedArgs, g_loremIpsum); + SELFTEST_ASSERT(strlen(g_savedArgs) == strlen(g_loremIpsum)); + + + sprintf(tmp, "alias lorem3 SimSaveArgs %s", g_loremIpsum3); + CMD_ExecuteCommand(tmp,0); + CMD_ExecuteCommand("lorem3", 0); + SELFTEST_ASSERT(strlen(g_savedArgs) == strlen(g_loremIpsum3)); + SELFTEST_ASSERT_STRING(g_savedArgs, g_loremIpsum3); + } #endif diff --git a/src/selftest/selftest_cmd_alias.c b/src/selftest/selftest_cmd_alias.c index dc75796ec..439fc3dfc 100644 --- a/src/selftest/selftest_cmd_alias.c +++ b/src/selftest/selftest_cmd_alias.c @@ -117,6 +117,72 @@ void Test_Commands_Alias_Generic() { CMD_ExecuteCommand("test8", 0); SELFTEST_ASSERT_CHANNEL(4, 11 + 10 * (9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 100)); SELFTEST_ASSERT_CHANNEL(5, 50); + + + CMD_ExecuteCommand("alias test9 backlog setChannel 4 11; setChannel 5 50; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100;\ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100; \ + addChannel 4 9; addChannel 4 8; addChannel 4 7; addChannel 4 6; \ + addChannel 4 5; addChannel 4 4; addChannel 4 3; \ + addChannel 4 2; addChannel 4 1; addChannel 4 100;", 0); + CMD_ExecuteCommand("test9", 0); + SELFTEST_ASSERT_CHANNEL(4, 11 + 20 * (9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 100)); + SELFTEST_ASSERT_CHANNEL(5, 50); // this check will fail obviously! //SELFTEST_ASSERT_CHANNEL(5, 666); } diff --git a/src/selftest/selftest_http.c b/src/selftest/selftest_http.c index b93877041..34db48c38 100644 --- a/src/selftest/selftest_http.c +++ b/src/selftest/selftest_http.c @@ -56,8 +56,8 @@ const char *Helper_GetPastHTTPHeader(const char *s) { return 0; } -static char outbuf[8192]; -static char buffer[8192]; +static char outbuf[65536]; +static char buffer[65536]; static const char *replyAt; //static jsmntok_t tokens[256]; /* We expect no more than qq JSON tokens */ @@ -119,6 +119,20 @@ void Test_GetJSONValue_Setup(const char *text) { g_json = cJSON_Parse(text); g_sec_power = cJSON_GetObjectItemCaseSensitive(g_json, "POWER"); } +void Test_FakeHTTPClientPacket_JSON_VA(const char *tg, ...) { + char bufferTemp[32768]; + va_list argList; + + va_start(argList, tg); + vsnprintf(bufferTemp, sizeof(bufferTemp), tg, argList); + va_end(argList); + int r; + Test_FakeHTTPClientPacket_GET(bufferTemp); + + //jsmn_init(&parser); + //r = jsmn_parse(&parser, replyAt, strlen(replyAt), tokens, 256); + Test_GetJSONValue_Setup(replyAt); +} void Test_FakeHTTPClientPacket_JSON(const char *tg) { /*char bufferTemp[8192]; va_list argList; diff --git a/src/selftest/selftest_local.h b/src/selftest/selftest_local.h index 2e9a37e5f..0be0bfbb4 100644 --- a/src/selftest/selftest_local.h +++ b/src/selftest/selftest_local.h @@ -139,7 +139,7 @@ void Test_GetJSONValue_Setup(const char *text); void Test_FakeHTTPClientPacket_GET(const char *tg); void Test_FakeHTTPClientPacket_POST(const char *tg, const char *data); void Test_FakeHTTPClientPacket_POST_withJSONReply(const char *tg, const char *data); -void Test_FakeHTTPClientPacket_JSON(const char *tg); +void Test_FakeHTTPClientPacket_JSON(const char *tg, ...); const char *Test_GetLastHTMLReply(); // TODO: move elsewhere?