/ / Enregistrer des enums sur la montre de caillou - c, débogage, montre de caillou, caillou-sdk

Journaux de journalisation sur la montre de caillou - c, débogage, montre de caillou, caillou-sdk

Quand je me connecte une erreur sur le galet comme ça:

static void message_dropped(AppMessageResult reason, void *context) {
APP_LOG(APP_LOG_LEVEL_DEBUG, "Message dropped. Reason: %d", reason);
}

Je viens d'obtenir la valeur int du message d'erreur. Existe-t-il un moyen facile de consigner le texte de l'énum? Comme:

static void message_dropped(AppMessageResult reason, void *context) {
APP_LOG(APP_LOG_LEVEL_DEBUG, "Message dropped. Reason: %fancy", reason);
}
// Would return "APP_MSG_BUFFER_OVERFLOW"

Réponses:

19 pour la réponse № 1

Il n'y a pas de fonction API pour le faire. Vous pouvez utiliser cette fonction pour AppMessageResult enum:

char *translate_error(AppMessageResult result) {
switch (result) {
case APP_MSG_OK: return "APP_MSG_OK";
case APP_MSG_SEND_TIMEOUT: return "APP_MSG_SEND_TIMEOUT";
case APP_MSG_SEND_REJECTED: return "APP_MSG_SEND_REJECTED";
case APP_MSG_NOT_CONNECTED: return "APP_MSG_NOT_CONNECTED";
case APP_MSG_APP_NOT_RUNNING: return "APP_MSG_APP_NOT_RUNNING";
case APP_MSG_INVALID_ARGS: return "APP_MSG_INVALID_ARGS";
case APP_MSG_BUSY: return "APP_MSG_BUSY";
case APP_MSG_BUFFER_OVERFLOW: return "APP_MSG_BUFFER_OVERFLOW";
case APP_MSG_ALREADY_RELEASED: return "APP_MSG_ALREADY_RELEASED";
case APP_MSG_CALLBACK_ALREADY_REGISTERED: return "APP_MSG_CALLBACK_ALREADY_REGISTERED";
case APP_MSG_CALLBACK_NOT_REGISTERED: return "APP_MSG_CALLBACK_NOT_REGISTERED";
case APP_MSG_OUT_OF_MEMORY: return "APP_MSG_OUT_OF_MEMORY";
case APP_MSG_CLOSED: return "APP_MSG_CLOSED";
case APP_MSG_INTERNAL_ERROR: return "APP_MSG_INTERNAL_ERROR";
default: return "UNKNOWN ERROR";
}
}

J'ai utilisé le pebble analyze-size commande pour mesurer l'impact de la mémoire. Cette fonction vous coûtera 228 octets supplémentaires de la mémoire de votre programme. Cela en vaut probablement la peine pour la plupart des développeurs;)

Et voici comment vous utiliseriez la fonction ci-dessus, par exemple dans le gestionnaire de messages déposé:

static void appmsg_in_dropped(AppMessageResult reason, void *context) {
APP_LOG(APP_LOG_LEVEL_DEBUG, "In dropped: %i - %s", reason, translate_error(reason));
}