I have a String that is determined at runtime by reading from EEPROM:
pb_ostream_t config_params_apn = pb_ostream_from_buffer(buffer_arr, buffer_arr_size);
read_or_load_defaults_buffer(APN_CONFIG_BASE,eeprom_buffer,&eeprom_buffer_length);
apn_msg.domain.arg = &eeprom_buffer;
apn_msg.domain.funcs.encode = &encode_string;
read_or_load_defaults_buffer(APN_UNAME_BASE,eeprom_buffer,&eeprom_buffer_length);
apn_msg.username.arg = "nuts";
apn_msg.username.funcs.encode = &encode_string;
The problem is that "nuts" is being encoded but the variable value in eeprom_buffer is not. I need some advise on why this could be happening, please?
Here is my encode_string function:
bool encode_string(pb_ostream_t* stream, const pb_field_t* field, void* const* arg)
char* str = (char*)(*arg);
if (!pb_encode_tag_for_field(stream, field))
return false;
return pb_encode_string(stream, (uint8_t*)str, strlen(str));