Merge pull request #10269 from TeemuKultala/cellular_valgrind_fix

cellular: valgrind defect fix
pull/10309/head
Martin Kojtal 2019-04-03 13:49:26 +02:00 committed by GitHub
commit 2369c12dea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 15 deletions

View File

@ -417,4 +417,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_ready_cb)
dev->set_ready_cb(&device_ready_cb);
dev->set_ready_cb(0);
delete dev;
}

View File

@ -140,10 +140,24 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_get_sms)
ATHandler_stub::int_value = 0;
EXPECT_TRUE(-1 == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
//In below we are expecting the stub ATHandler info_resp() to respond
//twice true, then once false, then again twice true so that the
//below message contents would be read in AT_CellularSMS read_sms_from_index().
//This is to avoid comparing empty date strings
ATHandler_stub::resp_info_true_counter = 2;
ATHandler_stub::resp_info_false_counter = 1;
ATHandler_stub::resp_info_true_counter2 = 2;
ATHandler_stub::int_value = 11;
ATHandler_stub::read_string_index = 4;
ATHandler_stub::read_string_table[4] = "";
ATHandler_stub::read_string_table[3] = "REC READ";
ATHandler_stub::read_string_table[2] = "09/01/12,11:15:00+04";
ATHandler_stub::read_string_table[1] = "REC READ";
ATHandler_stub::read_string_table[0] = "24/12/12,11:15:00+04";
EXPECT_TRUE(0 == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
//TODO: Should make add_info to happen, before calling get_sms!
ATHandler_stub::read_string_index = kRead_string_table_size;
ATHandler_stub::resp_info_true_counter = 2;
ATHandler_stub::int_value = 11;

View File

@ -493,11 +493,10 @@ TEST_F(TestATHandler, test_ATHandler_skip_param)
at.resp_start();
at.skip_param();
char table2[] = "sssOK\r\n\0";
filehandle_stub_table = table2;
at.flush();
at.clear_error();
char table2[] = "sssOK\r\n\0";
filehandle_stub_table = table2;
filehandle_stub_short_value_counter = 1;
filehandle_stub_table_pos = 0;
at.resp_start();
@ -914,13 +913,12 @@ TEST_F(TestATHandler, test_ATHandler_resp_start)
filehandle_stub_table_pos = 0;
at.resp_start("ssssaaaassssaaaassss"); //too long prefix
char table3[] = "+CME ERROR: 108\0";
at.flush();
at.clear_error();
char table3[] = "+CME ERROR: 108\r\n";
filehandle_stub_table = table3;
filehandle_stub_table_pos = 0;
at.flush();
at.clear_error();
filehandle_stub_table_pos = 0;
at.resp_start();
@ -929,7 +927,7 @@ TEST_F(TestATHandler, test_ATHandler_resp_start)
filehandle_stub_table_pos = 0;
at.resp_start();
char table4[] = "+CMS ERROR: 6\0";
char table4[] = "+CMS ERROR: 6\r\n";
filehandle_stub_table = table4;
filehandle_stub_table_pos = 0;
@ -1055,12 +1053,11 @@ TEST_F(TestATHandler, test_ATHandler_resp_stop)
at.set_stop_tag("OK\r\n");
at.resp_stop();
char table3[] = "+CME ERROR: 108\0";
filehandle_stub_table = table3;
filehandle_stub_table_pos = 0;
at.flush();
at.clear_error();
char table3[] = "+CME ERROR: 108\r\n";
filehandle_stub_table = table3;
filehandle_stub_table_pos = 0;
at.resp_start();

View File

@ -45,6 +45,8 @@ FileHandle_stub *ATHandler_stub::fh_value = NULL;
device_err_t ATHandler_stub::device_err_value;
bool ATHandler_stub::call_immediately = false;
uint8_t ATHandler_stub::resp_info_true_counter = false;
uint8_t ATHandler_stub::resp_info_true_counter2 = false;
uint8_t ATHandler_stub::resp_info_false_counter = false;
uint8_t ATHandler_stub::info_elem_true_counter = false;
int ATHandler_stub::int_valid_count_table[kRead_int_table_size];
int ATHandler_stub::int_count = kRead_int_table_size;
@ -55,7 +57,7 @@ const char *ATHandler_stub::read_string_table[kRead_string_table_size] = {'\0'};
int ATHandler_stub::resp_stop_success_count = kResp_stop_count_default;
int ATHandler_stub::urc_amount = 0;
mbed::Callback<void()> ATHandler_stub::callback[kATHandler_urc_table_max_size];
char *ATHandler_stub::urc_string_table[kATHandler_urc_table_max_size] = {'\0'};
char *ATHandler_stub::urc_string_table[kATHandler_urc_table_max_size] = {NULL};
bool ATHandler_stub::get_debug_flag = false;
uint8_t ATHandler_stub::set_debug_call_count = 0;
@ -156,8 +158,9 @@ void ATHandler::set_urc_handler(const char *urc, mbed::Callback<void()> cb)
{
if (ATHandler_stub::urc_amount < kATHandler_urc_table_max_size) {
ATHandler_stub::callback[ATHandler_stub::urc_amount] = cb;
ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount] = new char[kATHandler_urc_string_max_size];
if (urc) {
ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount] = new char[kATHandler_urc_string_max_size];
memset(ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount], 0, sizeof(ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount]));
int bytes_to_copy = strlen(urc) < kATHandler_urc_string_max_size ? strlen(urc) : kATHandler_urc_string_max_size;
memcpy(ATHandler_stub::urc_string_table[ATHandler_stub::urc_amount], urc, bytes_to_copy);
}
@ -213,9 +216,13 @@ void ATHandler::process_oob()
int i = 0;
while (i < ATHandler_stub::urc_amount) {
if (ATHandler_stub::read_string_index >= 0) {
int len = 0;
if (ATHandler_stub::urc_string_table[i]) {
len = strlen(ATHandler_stub::urc_string_table[i]);
}
if (!memcmp(ATHandler_stub::urc_string_table[i],
ATHandler_stub::read_string_table[ATHandler_stub::read_string_index],
strlen(ATHandler_stub::urc_string_table[i]))) {
len)) {
ATHandler_stub::callback[i]();
break;
}
@ -311,10 +318,32 @@ void ATHandler::resp_start(const char *prefix, bool stop)
bool ATHandler::info_resp()
{
//3 counter variables available here now so that in a test
//case it is possible to have at least two while loops checking
//specified amount of info_resps.
//
//For example:
//while(athandler.info_resp())
//{
// resp_info_true_counter responses handled in this loop
//}
// resp_info_false_counter set to 1 to break out from the 1st loop
//while(athandler.info_resp())
//{
// resp_info_true_counter2 responses handled in this loop
//}
if (ATHandler_stub::resp_info_true_counter) {
ATHandler_stub::resp_info_true_counter--;
return true;
}
if (ATHandler_stub::resp_info_false_counter) {
ATHandler_stub::resp_info_false_counter--;
return false;
}
if (ATHandler_stub::resp_info_true_counter2) {
ATHandler_stub::resp_info_true_counter2--;
return true;
}
return ATHandler_stub::bool_value;
}

View File

@ -50,6 +50,8 @@ extern size_t size_value;
extern size_t return_given_size;
extern bool bool_value;
extern uint8_t resp_info_true_counter;
extern uint8_t resp_info_true_counter2;
extern uint8_t resp_info_false_counter;
extern uint8_t info_elem_true_counter;
extern uint8_t uint8_value;
extern mbed::FileHandle_stub *fh_value;