This commit is contained in:
sirlilpanda
2025-08-28 21:19:47 +12:00
commit d4e72630e9
12 changed files with 2829 additions and 0 deletions

33
src/states/debug_state.c Normal file
View File

@@ -0,0 +1,33 @@
#include <stdio.h>
#include "state.h"
#include "../device.h"
const char debug_state_name[] = __FILE_NAME__;
static void pressPwrMethod(Device_t *device) {
printf("turning off device\n");
setOffState(device);
}
static void pressStrInputMethod(Device_t *device) {
printf("nothing happens\n");
}
static void pressLockMethod(Device_t *device) {
printf("locking device\n");
setOffState(device);
}
void setDebugState(Device_t *device) {
device->state = (DeviceState_t){
.state_name = debug_state_name,
.device = device,
.methods = (DeviceInterface_t){
.pressPwr = &pressPwrMethod,
.pressStrInput = &pressStrInputMethod,
.pressLock = &pressLockMethod,
},
};
}

45
src/states/lock_state.c Normal file
View File

@@ -0,0 +1,45 @@
#include <stdio.h>
#include <string.h>
#include "state.h"
#include "../device.h"
const char lock_state_name[] = __FILE_NAME__;
static void pressPwrMethod(Device_t *device) {
printf("turning off device\n");
setOffState(device);
}
static void pressStrInputMethod(Device_t *device) {
if (strcmp(device->entered_string, "dbg") == 0) {
printf("entering debug state\n");
setDebugState(device);
return;
}
if (strcmp(device->entered_string, "pwd") == 0) {
printf("entering unlock state\n");
setUnlockState(device);
return;
}
printf("unknown string %s\n", device->entered_string);
}
static void pressLockMethod(Device_t *device) {
printf("nothing happens\n");
}
void setLockState(Device_t *device) {
device->state = (DeviceState_t){
.state_name = lock_state_name,
.device = device,
.methods = (DeviceInterface_t){
.pressPwr = &pressPwrMethod,
.pressStrInput = &pressStrInputMethod,
.pressLock = &pressLockMethod,
},
};
}

31
src/states/off_state.c Normal file
View File

@@ -0,0 +1,31 @@
#include "state.h"
#include "../device.h"
#include <stdio.h>
const char off_state_name[] = __FILE_NAME__;
static void pressPwrMethod(Device_t *device) {
printf("turning on device\n");
setLockState(device);
}
static void pressStrInputMethod(Device_t *device) {
printf("nothing happens\n");
}
static void pressLockMethod(Device_t *device) {
printf("nothing happens\n");
}
void setOffState(Device_t *device) {
device->state = (DeviceState_t){
.state_name = off_state_name,
.device = device,
.methods = (DeviceInterface_t){
.pressPwr = &pressPwrMethod,
.pressStrInput = &pressStrInputMethod,
.pressLock = &pressLockMethod,
},
};
}

7
src/states/state.h Normal file
View File

@@ -0,0 +1,7 @@
#pragma once
#include "../device.h"
void setLockState(Device_t *device);
void setUnlockState(Device_t *device);
void setDebugState(Device_t *device);
void setOffState(Device_t *device);

37
src/states/unlock_state.c Normal file
View File

@@ -0,0 +1,37 @@
#include "state.h"
#include "../device.h"
#include <stdio.h>
#include <string.h>
const char name[] = __FILE_NAME__;
static void pressPwrMethod(Device_t *device) {
printf("turning off device\n");
setOffState(device);
}
static void pressStrInputMethod(Device_t *device) {
if (strcmp(device->entered_string, "dbg") == 0) {
printf("entering debug state\n");
setDebugState(device);
}
printf("unknown string %s\n", device->entered_string);
}
static void pressLockMethod(Device_t *device) {
printf("locking device\n");
setLockState(device);
}
void setUnlockState(Device_t *device) {
device->state = (DeviceState_t){
.state_name = name,
.device = device,
.methods = (DeviceInterface_t){
.pressPwr = &pressPwrMethod,
.pressStrInput = &pressStrInputMethod,
.pressLock = &pressLockMethod,
},
};
}