Поиск по словарю кортежа не возвращает полную строку

Я работаю над Приложением Pebble, и я использую AppMessage для связи между PebbleKitJS и обычным приложением C. Что касается JS, я использую следующий код для отправки по словарю строк различной длины:

var msg = {
    1: totalMessageString[0],
    2: totalMessageString[1],
    3: totalMessageString[2],
    4: totalMessageString[3],
    5: totalMessageString[4],
  };

  Pebble.sendAppMessage(msg, 
                        function(e) {
                          console.log("Search Results Sent!");
                        },
                        function(e) {
                          console.log("Search Results Failed with Error: " + e.error);
                        });

Строки, хранящиеся в totalMessageString, имеют длину от 30 до более 200 символов. На стороне C я использую следующий код для чтения этих сообщений:

static void inbox_received_callback(DictionaryIterator *iter, void *context) {
  for (int i = 1; i < 11; i++) {
    Tuple *result = dict_find(iter, i);

    if (result) {
      char *location_name = result->value->cstring;
      static char s_buffer[512];
      snprintf(s_buffer, sizeof(s_buffer), "%s", location_name);
      APP_LOG(APP_LOG_LEVEL_INFO, "Message Recieved: %s",s_buffer);
      text_layer_set_text(text_layer, s_buffer);
    }

    //No More results!
    else {
      APP_LOG(APP_LOG_LEVEL_INFO, "No Message found for index %i",i);
      break;
    }
  }

}

Строки длиной до 70 символов отправляются просто отлично, но строки более чем обрезаются (они не распечатываются полностью). Увеличение размера s_buffer также не имеет никакого эффекта. Может кто-нибудь помочь мне понять, что я делаю не так? Я подозреваю, что есть способ определить размер Tuple, но я не уверен, как. Спасибо!

1 ответ

Я не могу проверить это, поскольку CloudPebble в настоящее время не работает, и это предположение, но вы проверили app_message_open( size_inbound, size_outbound ); правильно настроен для обработки всего сообщения?

Другие вопросы по тегам