我有一个在运行时通过从 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;
问题是“nuts”正在被编码,但变量值eeprom_buffer
不是。我需要一些关于为什么会发生这种情况的建议,好吗?
这是我的encode_string
功能:
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));