Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 0 additions & 79 deletions .clang-tidy

This file was deleted.

7 changes: 2 additions & 5 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,7 @@ RUN apt-get update && apt-get install -y \
texlive-fonts-recommended \
texlive-plain-generic \
latexmk \
clang \
clangd \
clang-format \
clang-tidy \
clang-tools \
cppcheck \
flawfinder \
python3-pip \
Expand All @@ -43,7 +39,8 @@ RUN curl -fsSL -o /tmp/sonar-scanner.zip \
&& rm /tmp/sonar-scanner.zip \
&& rm -rf /var/lib/apt/lists/*

RUN git config --global core.editor "nano"
RUN git config --system core.editor "nano" \
&& git config --system --add safe.directory /home/user/Documents/solaris-software

WORKDIR /root

Expand Down
17 changes: 10 additions & 7 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
],
"remoteUser": "root",
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/tmp/host-ssh,type=bind,consistency=cached,readonly",
"source=${localEnv:HOME}/.gitconfig,target=/root/.gitconfig,type=bind,consistency=cached,readonly"
"source=${localEnv:HOME}/.ssh,target=/tmp/host-ssh,type=bind,consistency=cached,readonly"
],
"postCreateCommand": "/bin/bash -lc 'echo \"source /opt/esp/idf/export.sh\" >> ~/.bashrc && mkdir -p /root/.ssh && cp -a /tmp/host-ssh/. /root/.ssh/ 2>/dev/null || true && chown -R root:root /root/.ssh && chmod 700 /root/.ssh && for f in /root/.ssh/config /root/.ssh/known_hosts /root/.ssh/id_rsa /root/.ssh/raspberrypi /root/.ssh/id_ed25519; do [ -f \"$f\" ] && chmod 600 \"$f\"; done && for f in /root/.ssh/id_rsa.pub /root/.ssh/raspberrypi.pub /root/.ssh/id_ed25519.pub; do [ -f \"$f\" ] && chmod 644 \"$f\"; done && echo \"Dev container ready for ESP-IDF development!\"'",
"remoteEnv": {
Expand All @@ -26,9 +25,15 @@
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash",
"C_Cpp.intelliSenseEngine": "disabled",
"C_Cpp.intelliSenseEngine": "default",
"C_Cpp.autocomplete": "default",
"C_Cpp.errorSquiggles": "enabled",
"C_Cpp.default.compileCommands": "/home/user/Documents/solaris-software/solaris-v1/build/compile_commands.json",
"editor.formatOnSave": true,
"clangd.path": "/usr/bin/clangd",
"files.associations": {
"*.h": "c",
"*.c": "c"
},
"[c]": {
"editor.defaultFormatter": "xaver.clang-format"
},
Expand All @@ -44,9 +49,7 @@
"samubarb.vscode-doxyfile",
"openai.tu-extension-codex",
"github.vscode-pull-request-github",
"llvm-vs-code-extensions.vscode-clangd",
"xaver.clang-format",
"jbenden.c-cpp-flylint"
"xaver.clang-format"
]
}
}
Expand Down
3 changes: 3 additions & 0 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ services:
USERNAME: root
USER_UID: 1000
USER_GID: 1000
devices:
- "/dev/ttyACM0:/dev/ttyACM0"
privileged: true
user: root
tty: true
stdin_open: true
Expand Down
141 changes: 141 additions & 0 deletions solaris-v1/components/datalogger_driver/dataloggerSD.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#include "dataloggerSD.h"

#include "storage.h"
#include "spp_log.h"
#include "types.h"
#include <string.h>

static const char *TAG = "DATALOGGER";

retval_t DATALOGGER_Init(Datalogger_t *p_logger, void *p_storage_cfg, const char *p_file_path)
{
retval_t ret;

memset(p_logger, 0, sizeof(Datalogger_t));
p_logger->p_storage_cfg = p_storage_cfg;

ret = SPP_HAL_Storage_Mount(p_storage_cfg);
if (ret != SPP_OK)
{
SPP_LOGE(TAG, "Storage mount failed");
return ret;
}

p_logger->p_file = fopen(p_file_path, "w");
if (p_logger->p_file == NULL)
{
SPP_LOGE(TAG, "Failed to open file: %s", p_file_path);
(void)SPP_HAL_Storage_Unmount(p_storage_cfg);
return SPP_ERROR;
}

p_logger->is_initialized = 1U;
p_logger->logged_packets = 0U;

SPP_LOGI(TAG, "Init OK file=%s", p_file_path);
return SPP_OK;
}

retval_t DATALOGGER_LogPacket(Datalogger_t *p_logger, const spp_packet_t *p_packet)
{
if ((p_logger->is_initialized == 0U) || (p_logger->p_file == NULL))
{
return SPP_ERROR;
}

int logSD;
logSD =
fprintf(p_logger->p_file,
"pkt=%lu ver=%u apid=0x%04X seq=%u len=%u ts=%lu drop=%u crc=%u payload_hex=",
(unsigned long)p_logger->logged_packets, (unsigned)p_packet->primary_header.version,
(unsigned)p_packet->primary_header.apid, (unsigned)p_packet->primary_header.seq,
(unsigned)p_packet->primary_header.payload_len,
(unsigned long)p_packet->secondary_header.timestamp_ms,
(unsigned)p_packet->secondary_header.drop_counter, (unsigned)p_packet->crc);

if (logSD < 0)
{
SPP_LOGE(TAG, "fprintf header failed");
return SPP_ERROR;
}


for (spp_uint16_t i = 0U; i < p_packet->primary_header.payload_len; i++)
{
// Write payload in hexa.
logSD = fprintf(p_logger->p_file, "%02X", (unsigned)p_packet->payload[i]);
if (logSD < 0)
{
SPP_LOGE(TAG, "fprintf payload failed");
return SPP_ERROR;
}

// Add a separator
if (i + 1U < p_packet->primary_header.payload_len)
{
logSD = fprintf(p_logger->p_file, " ");
}
}
// New line after writing the packet
logSD = fprintf(p_logger->p_file, "\n");

p_logger->logged_packets++;

return SPP_OK;
}

retval_t DATALOGGER_Flush(Datalogger_t *p_logger)
{
if ((p_logger->is_initialized == 0U) || (p_logger->p_file == NULL))
{
return SPP_ERROR;
}

if (fflush(p_logger->p_file) != 0)
{
SPP_LOGE(TAG, "fflush failed");
return SPP_ERROR;
}

SPP_LOGI(TAG, "fflush OK");
return SPP_OK;
}

retval_t DATALOGGER_Deinit(Datalogger_t *p_logger)
{
retval_t ret;

if (p_logger == NULL)
{
return SPP_ERROR_NULL_POINTER;
}

if (p_logger->p_file != NULL)
{
if (fflush(p_logger->p_file) != 0)
{
SPP_LOGE(TAG, "fflush failed during deinit");
}

fclose(p_logger->p_file);
p_logger->p_file = NULL;
}

if (p_logger->p_storage_cfg != NULL)
{
ret = SPP_HAL_Storage_Unmount(p_logger->p_storage_cfg);
if (ret != SPP_OK)
{
SPP_LOGE(TAG, "Storage unmount failed");
p_logger->is_initialized = 0U;
p_logger->p_storage_cfg = NULL;
return ret;
}
}

p_logger->is_initialized = 0U;
p_logger->p_storage_cfg = NULL;

SPP_LOGI(TAG, "Deinit OK");
return SPP_OK;
}
25 changes: 25 additions & 0 deletions solaris-v1/components/datalogger_driver/include/dataloggerSD.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#ifndef DATALOGGER_H
#define DATALOGGER_H

#include "spp/core/returntypes.h"
#include "spp/core/packet.h"
#include <stdio.h>
#include <stdint.h>

typedef struct
{
void *p_storage_cfg;
FILE *p_file;
uint8_t is_initialized;
uint32_t logged_packets;
} Datalogger_t;

retval_t DATALOGGER_Init(Datalogger_t *p_logger, void *p_storage_cfg, const char *p_file_path);

retval_t DATALOGGER_LogPacket(Datalogger_t *p_logger, const spp_packet_t *p_packet);

retval_t DATALOGGER_Flush(Datalogger_t *p_logger);

retval_t DATALOGGER_Deinit(Datalogger_t *p_logger);

#endif /* DATALOGGER_H */
2 changes: 1 addition & 1 deletion solaris-v1/external/spp
Submodule spp updated 0 files
2 changes: 1 addition & 1 deletion solaris-v1/external/spp-ports
Loading
Loading