--- atgen.c 2004-04-13 23:27:41.000000000 +0200 +++ /home/hugo/atgen.c 2004-04-14 22:49:07.000000000 +0200 @@ -366,12 +367,14 @@ { at_driver_instance *drvinst = AT_DRVINST(state); gn_data data; - char req[32]; + char req[32], memtype[10]; + int len; gn_error ret = GN_ERR_NONE; if (mt != drvinst->memorytype) { - sprintf(req, "AT+CPBS=\"%s\"\r", memorynames[mt]); - ret = sm_message_send(13, GN_OP_Init, req, state); + len = at_encode(drvinst->charset, memtype, memorynames[mt], strlen(memorynames[mt])); + sprintf(req, "AT+CPBS=\"%s\"\r", memtype); + ret = sm_message_send(11 + len, GN_OP_Init, req, state); if (ret) return GN_ERR_NOTREADY; gn_data_clear(&data); @@ -593,7 +596,7 @@ { at_driver_instance *drvinst = AT_DRVINST(state); int len, ofs; - char req[256], *tmp; + char req[256], pnumber[256], *tmp; gn_error ret; ret = at_memory_type_set(data->phonebook_entry->memory_type, state); @@ -605,9 +608,10 @@ ret = state->driver.functions(GN_OP_AT_SetCharset, data, state); if (ret) return ret; + at_encode(drvinst->charset, pnumber, data->phonebook_entry->number, strlen(data->phonebook_entry->number)); ofs = sprintf(req, "AT+CPBW=%d,\"%s\",%s,\"", data->phonebook_entry->location+drvinst->memoryoffset, - data->phonebook_entry->number, + pnumber, data->phonebook_entry->number[0] == '+' ? "145" : "129"); len = strlen(data->phonebook_entry->name); tmp = req + ofs; @@ -934,7 +938,7 @@ endpos = strchr(++pos, '\"'); if (endpos) { *endpos = '\0'; - strcpy(data->phonebook_entry->number, pos); + at_decode(drvinst->charset, data->phonebook_entry->number, pos, strlen(pos)); } /* store name */