pebble/src/fw/services/normal/data_logging/dls_command.c
2025-01-27 11:38:16 -08:00

80 lines
2.6 KiB
C

/*
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "data_logging_service.h"
#include "dls_list.h"
#include "console/prompt.h"
#include <inttypes.h>
static bool command_dls_list_cb(DataLoggingSession *session, void *data) {
char buffer[80];
prompt_send_response_fmt(buffer, sizeof(buffer),
"session_id : %"PRIu8", tag: %"PRIu32", bytes: %"PRIu32", write_offset: %"PRIu32,
session->comm.session_id, session->tag, session->storage.num_bytes,
session->storage.write_offset);
return true;
}
void command_dls_list(void) {
dls_list_for_each_session(command_dls_list_cb, 0);
}
// Unused, comment out to avoid pulling in the string literals
#if 0
void command_dls_show(const char *id) {
uint8_t session_id = strtol(id, NULL, 0);
DataLoggingSession *logging_session = dls_list_find_by_session_id(session_id);
if (logging_session == NULL) {
prompt_send_response("LoggingSession not found");
return;
}
char uuid_b[UUID_STRING_BUFFER_LENGTH];
uuid_to_string(&logging_session->app_uuid, uuid_b);
char buffer[80];
#define WRITE_LINE(fmt, arg) \
prompt_send_response_fmt(buffer, sizeof(buffer), fmt, arg)
WRITE_LINE("session_id %u", logging_session->comm.session_id);
WRITE_LINE("uuid %s", uuid_b);
WRITE_LINE("data state %u", logging_session->status);
WRITE_LINE("tag %lu", logging_session->tag);
WRITE_LINE("item type %u", logging_session->item_type);
WRITE_LINE("item size %u", logging_session->item_size);
WRITE_LINE("storage %lu bytes", logging_session->storage.num_bytes);
WRITE_LINE(" r sector %u", logging_session->storage.read_sector);
WRITE_LINE(" r offset %"PRIu32, logging_session->storage.read_offset);
WRITE_LINE(" w sector %u", logging_session->storage.write_sector);
WRITE_LINE(" w offset %"PRIu32, logging_session->storage.write_offset);
#undef WRITE_LINE
}
#endif
void command_dls_erase_all(void) {
dls_clear();
}
void command_dls_send_all(void) {
// Use this to trigger a send of all data logging data to the phone, helpful for testing
dls_send_all_sessions();
}