mirror of
https://github.com/Lurkars/esp-ena.git
synced 2024-11-01 03:04:37 +01:00
189 lines
5.6 KiB
C
189 lines
5.6 KiB
C
// Copyright 2020 Lukas Haubaum
|
|
//
|
|
// Licensed under the GNU Affero General Public License, Version 3;
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
|
|
// https://www.gnu.org/licenses/agpl-3.0.html
|
|
//
|
|
// 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.
|
|
|
|
#ifndef _ena_STORAGE_H_
|
|
#define _ena_STORAGE_H_
|
|
|
|
#include "ena-crypto.h"
|
|
#include "ena-datastructures.h"
|
|
|
|
#define ENA_STORAGE_LOG "ESP-ENA-storage" // TAG for Logging
|
|
#define PARTITION_NAME "ena" // name of partition to use for storing
|
|
#define ENA_STORAGE_TEK_STORE_PERIOD (14) // Period of storing TEKs // length of a stored detection -> RPI keysize + AEM size + 4 Bytes for ENIN + 4 Bytes for RSSI
|
|
#define ENA_STORAGE_TEMP_DETECTIONS_MAX (1000) // Maximum number of temporary stored detections
|
|
|
|
/**
|
|
* @brief read bytes at given address
|
|
*
|
|
* @param[in] address the address to read bytes from
|
|
* @param[out] data pointer to write the read data
|
|
* @param[in] size how many bytes to read
|
|
*/
|
|
void ena_storage_read(size_t address, void *data, size_t size);
|
|
|
|
/**
|
|
* @brief store bytes at given address
|
|
*
|
|
* @param[in] address the address to write bytes to
|
|
* @param[in] data pointer to the data to write
|
|
* @param[in] size how many bytes to write
|
|
*/
|
|
void ena_storage_write(size_t address, void *data, size_t size);
|
|
|
|
/**
|
|
* @brief deletes bytes at given address and shift other data back
|
|
*
|
|
* @param[in] address the address to delete from
|
|
* @param[in] end_address the address to mark end of shift
|
|
* @param[in] size how many bytes to delete
|
|
*/
|
|
void ena_storage_shift_delete(size_t address, size_t end_address, size_t size);
|
|
|
|
/**
|
|
* @brief get last stored TEK
|
|
*
|
|
* @param[out] tek pointer to write last TEK to
|
|
*
|
|
* @return
|
|
* total number of TEKs stored
|
|
*/
|
|
uint32_t ena_storage_read_last_tek(ena_tek_t *tek);
|
|
|
|
/**
|
|
* @brief store given TEK
|
|
*
|
|
* This will store the given TEK as new TEK.
|
|
*
|
|
* @param[in] tek the tek to store
|
|
*/
|
|
void ena_storage_write_tek(ena_tek_t *tek);
|
|
|
|
/**
|
|
* @brief get number of stored temporary detections
|
|
*
|
|
* @return
|
|
* total number of temporary detections stored
|
|
*/
|
|
uint32_t ena_storage_temp_detections_count(void);
|
|
|
|
/**
|
|
* @brief get temporary detection at given index
|
|
*
|
|
* @param[in] index the index of the temporary detection to read
|
|
* @param[out] detection pointer to temporary to write to
|
|
*/
|
|
void ena_storage_get_temp_detection(uint32_t index, ena_temp_detection_t *detection);
|
|
|
|
/**
|
|
* @brief store temporary detection
|
|
*
|
|
* @param[in] detection new temporary detection to store
|
|
*
|
|
* @return
|
|
* index of new stored detection
|
|
*/
|
|
uint32_t ena_storage_add_temp_detection(ena_temp_detection_t *detection);
|
|
|
|
/**
|
|
* @brief store temporary detection at given index
|
|
*
|
|
* @param[in] index the index of the temporary detection to overwrite
|
|
* @param[in] detection temporary detection to store
|
|
*/
|
|
void ena_storage_set_temp_detection(uint32_t index, ena_temp_detection_t *detection);
|
|
|
|
/**
|
|
* @brief remove temporary detection at given index
|
|
*
|
|
* @param[in] index the index of the temporary detection to remove
|
|
*/
|
|
void ena_storage_remove_temp_detection(uint32_t index);
|
|
|
|
/**
|
|
* @brief get number of stored detections
|
|
*
|
|
* @return
|
|
* total number of detections stored
|
|
*/
|
|
uint32_t ena_storage_detections_count(void);
|
|
|
|
/**
|
|
* @brief get detection at given index
|
|
*
|
|
* @param[in] index the index of the detection to read
|
|
* @param[out] detection pointer to to write to
|
|
*/
|
|
void ena_storage_get_detection(uint32_t index, ena_detection_t *detection);
|
|
|
|
/**
|
|
* @brief store detection
|
|
*
|
|
* @param[in] detection new detection to store
|
|
*/
|
|
void ena_storage_add_detection(ena_detection_t *detection);
|
|
|
|
/**
|
|
* @brief erase the storage
|
|
*
|
|
* This function completely deletes all stored data and resets the counters
|
|
* of TEKs, temporary detection and detection to zero.
|
|
*/
|
|
void ena_storage_erase(void);
|
|
|
|
/**
|
|
* @brief erase stored TEKs
|
|
*
|
|
* This function deletes all stored TEKs and resets counter to zero.
|
|
*/
|
|
void ena_storage_erase_tek(void);
|
|
|
|
/**
|
|
* @brief erase stored temporary detections
|
|
*
|
|
* This function deletes all stored temporary detections and resets counter to zero.
|
|
*/
|
|
void ena_storage_erase_temporary_detection(void);
|
|
|
|
/**
|
|
* @brief erase stored detections
|
|
*
|
|
* This function deletes all stored detections and resets counter to zero.
|
|
*/
|
|
void ena_storage_erase_detection(void);
|
|
|
|
/**
|
|
* @brief dump all stored TEKs to serial output
|
|
*
|
|
* This function prints all stored TEKs to serial output in
|
|
* the following CSV format: #,enin,tek
|
|
*/
|
|
void ena_storage_dump_tek(void);
|
|
|
|
/**
|
|
* @brief dump all stored temporary detections to serial output
|
|
*
|
|
* This function prints all stored temporary detections to serial output in
|
|
* the following CSV format: #,timestamp_first,timestamp_last,rpi,aem,rssi
|
|
*/
|
|
void ena_storage_dump_temp_detections(void);
|
|
|
|
/**
|
|
* @brief dump all stored detections to serial output
|
|
*
|
|
* This function prints all stored detections to serial output in
|
|
* the following CSV format: #,timestamp,rpi,aem,rssi
|
|
*/
|
|
void ena_storage_dump_detections(void);
|
|
|
|
#endif |