END_TEST START_TEST(test_str_add_str) { str_t *str1 = str_from_cstr("123"); str_t *str2 = str_from_cstr("456"); str_add_str(&str1, str2); CHECK_STR(str1, >= 6, == 6, "123456"); str_free(str1); str_free(str2); str1 = str_new(0); str2 = str_from_cstr("preved"); str_add_str(&str1, str2); CHECK_STR(str1, >= 6, == 6, "preved"); str_free(str2); str2 = str_from_cstr("medved"); str_add_str(&str1, str2); CHECK_STR(str1, >= 12, == 12, "prevedmedved"); str_free(str2); str2 = str_from_cstr(""); str_add_str(&str1, str2); CHECK_STR(str1, >= 12, == 12, "prevedmedved"); str_free(str2); str_free(str1); }
void sms_command_r(){ char a[1]; unsigned int i; str_add_str(output_sms_message,sizeof(output_sms_message),(get_guard_st() ? "na ohrane" : "snqt s ohranQ"),0); str_add_str(output_sms_message,sizeof(output_sms_message),"\n",0); str_add_str(output_sms_message,sizeof(output_sms_message),"vh:",0); for (i = 1;i<6;i++) { a[0] = (('-' - (check_input(i)*2))); str_add_str(output_sms_message,sizeof(output_sms_message),a,1); } str_add_str(output_sms_message,sizeof(output_sms_message),"\n",0); str_add_str(output_sms_message,sizeof(output_sms_message),"vQh:",0); for (i = 1;i<6;i++) { // a[0] = ('1' - (GPIO_READ((outputs_port[(i-1)]),(output[i-1].pin))*2)); str_add_str(output_sms_message,sizeof(output_sms_message),a,1); } str_add_str(output_sms_message,sizeof(output_sms_message),"\n",0); str_add_str(output_sms_message,sizeof(output_sms_message),"temp:",0); for (i = 0;i < get_DS18x20_count();i++){ int16_t tp = get_last_temp_DS18x20_by_number(i); if (tp == ONE_WIRE_CONVERSION_ERROR) str_add_str(output_sms_message,sizeof(output_sms_message),"?",0); else str_add_num(output_sms_message,tp); str_add_str(output_sms_message,sizeof(output_sms_message),";",0); } str_add_str(output_sms_message,sizeof(output_sms_message),"\n",0); if (get_powered() == POWERED_220V) str_add_str(output_sms_message,sizeof(output_sms_message),"220v",0); else str_add_str(output_sms_message,sizeof(output_sms_message),"akkum!",0); send_sms_message_for_all(output_sms_message,SMS_FUNCTION_SERVICE); }
void parse_incoming_sms(){ uint8_t temp = 0; int32_t temp2 = 0; int32_t temp3 = 0; int i; char command_str[70]; char command[20]; char command_count = 0; char bug_command_count = 0; for (i = 0;i<11;i++) tel_number_temp[i] = gsm_message[i+24]; last_control_ID_number = check_number(tel_number_temp); if (last_control_ID_number > MAX_TEL_NUMBERS) return; sms_ucs_to_eng(gsm_message, input_sms_message); #ifdef DEBUG_MODEM send_string_to_UART3("INCOMING SMS! NUMBER: "); send_string_to_UART3(tel_number_temp); send_string_to_UART3(" ID: "); send_int_to_UART3(last_control_ID_number); send_string_to_UART3(" \n\r"); send_string_to_UART3(" SMS: "); send_string_to_UART3(input_sms_message); send_string_to_UART3(" \n\r"); #endif while(get_next_command_from_sms(input_sms_message,command_str,command_count)){ command_count++; #ifdef DEBUG_MODEM send_string_to_UART3("Progessing command: "); send_string_to_UART3(command_str); send_string_to_UART3("\n\r"); #endif switch(command_str[0]){ //nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn case 'n': switch(command_str[1]){ case 'n': //nnX +79021201364 sms_command_nn(command_str); break; case 't': //ntX -10,29,00010011 temp = 0; temp2 = parse_int_in_message(command_str,4); temp3 = parse_int_in_message(command_str,(4 + get_size_number(temp2) + 1)); for (i = 0;;i++) { char a = command_str[4 + i + get_size_number(temp2) + 1 + get_size_number(temp3) +1]; if ((a != '0') && (a != '1')) break; temp = (temp<<1) | (a - '0'); } set_ds18x20_settings((command_str[2]-'0'),temp2,temp3,temp); break; case 'v': temp = 0; if (command_str[2] == 't'){ if (command_str[3] < '0' || command_str[3] > '9') break; //nvt1 dverb zapili set_input_text((command_str[3]-'0'),command_str); }else{ if (command_str[2] < '0' || command_str[2] > '9') break; //nv1 3,7,000,2 for (i = 0;;i++) { if ((command_str[8 + i] != '0') && (command_str[8 + i] != '1')) break; temp = (temp<<1) | (command_str [8 + i] - '0'); } set_input_settings( (command_str[2]-'0'), (command_str[4]-'0'), (command_str[6]-'0'), temp, parse_int_in_message(command_str,(8+i+1)) ); } break; case 'r': //nr lov12 for (i = 0;i < MAX_OUTPUT;i++){ set_output_settings(i,(command_str[3 + i])); } break; case 'i': //ni lov12 for (i = 0;i < MAX_LED;i++){ set_led_settings(i,(command_str[3 + i])); } break; case 'p': //np 93 setting_powered(1); break; case 'a': //np 93 setting_powered(2); break; case 's': //ns temp = 0; temp2 = 0; temp3 = 0; for (i = 0;;i++) { if ((command_str[3 + i] != '0') && (command_str[3 + i] != '1')) break; temp = (temp<<1) | (command_str[3 + i] - '0'); } temp2 = parse_int_in_message(command_str,(3+i+1)); temp3 = parse_int_in_message(command_str,(3+i+1+ get_size_number(temp2) +1)); set_device_setting(temp,temp2,temp3); break; default: bug_command_count++; break; } break; //oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo case 'o': //o0 o1 o str_add_str(last_control_guard,sizeof(last_control_guard),"+79",0); convert_number_to_eng(tel_number_temp); str_add_str(last_control_guard,sizeof(last_control_guard),tel_number_temp,10); if (command_str[1]) set_new_guard_st((command_str[1] - '0')); else set_new_guard_st(!get_guard_st()); break; //rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr case 'r': //r sms_command_r(); break; //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb case 'b': //b *102# temp = str_length(command_str); for (i = 0; i < (temp - 2);i++){ command[i] = command_str[i+2]; } command[i+1] = 0; send_string_to_GSM("AT+CUSD=1,\""); send_string_to_GSM(command); send_command_to_GSM("\"","OK",gsm_message,2,5); // send_command_to_GSM("AT+CUSD=1,\"*102#\"","OK",gsm_message,2,5); break; //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa case 'a': if ((command_str[1]) == 's') { //vs 3 if (!command_str[3]) FULL_RESET(); temp = parse_int_in_message(command_str,(3)); set_time_to_reset(temp); }else if ((command_str[1]) == 'r'){ //vr 48 setting_time_to_report(parse_int_in_message(command_str,(3))); }else{ bug_command_count++; } break; //UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU case 'u': if ((command_str[1]) == 'v') { //vs 3 temp2 = parse_int_in_message(command_str,4); sms_control_output((command_str[2] - '0'), temp2); }else{ bug_command_count++; } break; //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS case 's': if ((command_str[1]) == 'b') if ((command_str[2]) == 'r') if ((command_str[3]) == 'o') if ((command_str[4]) == 's') FULL_ERASE_DEVICE(); break; default: bug_command_count++; break; } for (i = 0;i<70;i++){ if (!command_str[i]) break; command_str[i] = 0; } } if (check_device_setting(DEVICE_SETTING_SMS_AT_SMS_COMMAND)){ if ((command_count - bug_command_count)){ str_add_str(output_sms_message,sizeof(output_sms_message),"prinqto komand: ",0); str_add_num(output_sms_message,(command_count - bug_command_count)); } if (bug_command_count){ str_add_str(output_sms_message,sizeof(output_sms_message)," \nnevernaq komanda: ",0); str_add_num(output_sms_message,bug_command_count); } send_sms_message_for_all(output_sms_message,SMS_FUNCTION_SERVICE); } for (i = 0;i<70;i++) input_sms_message[i] = 0; }