untested persistence

This commit is contained in:
rusefillc 2022-07-14 06:03:39 -04:00
parent 8001b5edc5
commit 467f4606fb
5 changed files with 82 additions and 14 deletions

View File

@ -133,6 +133,7 @@ CSRC = $(ALLCSRC) \
CPPSRC = $(ALLCPPSRC) \
uart.cpp \
mc33816_control.cpp \
persistence.cpp \
can.cpp \
fault.cpp \
main.cpp

View File

@ -1,11 +1,16 @@
#include "can.h"
#include "hal.h"
#include "fault.h"
#include "io_pins.h"
#include <cstdint>
#include <cstring>
#include "fault.h"
#include "io_pins.h"
#include "persistence.h"
int flashVersion;
static const CANConfig canConfig500 =
{
CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP,
@ -25,6 +30,7 @@ void SendSomething()
m_frame.RTR = CAN_RTR_DATA;
m_frame.DLC = 8;
memset(m_frame.data8, 0, sizeof(m_frame.data8));
m_frame.data8[2] = flashVersion;
m_frame.data8[3] = 0x33;
m_frame.data8[6] = 0x66;
@ -50,6 +56,27 @@ void CanRxThread(void*)
{
while(1)
{
CANRxFrame frame;
msg_t msg = canReceiveTimeout(&CAND1, CAN_ANY_MAILBOX, &frame, TIME_INFINITE);
// Ignore non-ok results...
if (msg != MSG_OK)
{
continue;
}
// Ignore std frames, only listen to ext
if (frame.IDE != CAN_IDE_EXT)
{
continue;
}
if (frame.EID == 0x200) {
flashVersion = IncAndGet();
}
chThdSleepMilliseconds(100);
}
}

View File

@ -5,24 +5,13 @@
#include "fault.h"
#include "uart.h"
#include "io_pins.h"
#include "hal_mfs.h"
#include "persistence.h"
#include "mc33816_control.h"
#include "mc33816_data.h"
#include <algorithm>
const MFSConfig mfscfg1 = {
.flashp = (BaseFlash *)&EFLD1,
.erased = 0xFFFFFFFFU,
.bank_size = 1024U,
.bank0_start = 126U,
.bank0_sectors = 1U,
.bank1_start = 127U,
.bank1_sectors = 1U
};
static void InitPins() {
// stm32 TX - dongle RX often White
palSetPadMode(GPIOA, 9, PAL_MODE_STM32_ALTERNATE_PUSHPULL );
@ -123,6 +112,8 @@ void setBoostVoltage(float volts)
// Remember to strobe driven!!
}
// todo: use me!!
/*
static bool check_flash() {
spiSelect(driver);
@ -146,6 +137,7 @@ static bool check_flash() {
spiUnselect(driver);
return true;
}
*/
static unsigned short readDriverStatus(){
unsigned short driverStatus;
@ -336,6 +328,7 @@ int main() {
// Fire up all of our threads
InitPins();
InitFlash();
InitCan();
InitUart();

View File

@ -0,0 +1,43 @@
#include "ch.h"
#include "hal.h"
#include "persistence.h"
#include "hal_mfs.h"
const MFSConfig mfscfg1 = {
.flashp = (BaseFlash *)&EFLD1,
.erased = 0xFFFFFFFFU,
.bank_size = 1024U,
.bank0_start = 126U,
.bank0_sectors = 1U,
.bank1_start = 127U,
.bank1_sectors = 1U
};
static MFSDriver mfs1;
uint8_t mfs_buffer[512];
void InitFlash() {
mfsObjectInit(&mfs1);
mfs_error_t err = mfsStart(&mfs1, &mfscfg1);
// assert(err == MFS_NO_ERROR, "initialization error with erased flash");
}
mfs_error_t readErr;
mfs_error_t writeErr;
int IncAndGet() {
size_t size = sizeof mfs_buffer;
readErr = mfsReadRecord(&mfs1, 1, &size, mfs_buffer);
int result;
if (readErr == MFS_NO_ERROR) {
result = 5;
} else {
result = mfs_buffer[0];
}
result++;
mfs_buffer[0] = result;
size = sizeof mfs_buffer;
writeErr = mfsWriteRecord(&mfs1, 1, sizeof mfs_buffer, mfs_buffer);
return result;
}

View File

@ -0,0 +1,4 @@
#pragma once
void InitFlash();
int IncAndGet();