112 lines
1.7 KiB
C
112 lines
1.7 KiB
C
|
|
/*
|
||
|
|
* mode.c
|
||
|
|
*
|
||
|
|
* Created on: Jun 27, 2022
|
||
|
|
* Author: Keith.Lloyd
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "spi.h"
|
||
|
|
#include <stdbool.h>
|
||
|
|
#include <stdint.h>
|
||
|
|
#include <frq.h>
|
||
|
|
#include <stdio.h>
|
||
|
|
#include "arm_math.h"
|
||
|
|
#include "display.h"
|
||
|
|
#include "timer.h"
|
||
|
|
#include "mode.h"
|
||
|
|
#include "ports.h"
|
||
|
|
|
||
|
|
extern uint8_t Port_State[];
|
||
|
|
extern uint8_t LD_Flag;
|
||
|
|
uint8_t Cur_Mode, Old_Mode, Port_changed_flag; // Currently selected mode and last
|
||
|
|
MODE_REC_t mode_Array[MODE_MAX_NUM];
|
||
|
|
|
||
|
|
void mode_menu(void)
|
||
|
|
{
|
||
|
|
|
||
|
|
uint32_t value = 22370; // testing only
|
||
|
|
uint32_t tmp;
|
||
|
|
|
||
|
|
static bool keithistan = false;
|
||
|
|
|
||
|
|
|
||
|
|
// Delay_Ticks(10);
|
||
|
|
keithistan ^= 1; //toggle
|
||
|
|
|
||
|
|
Select_Next_Mode(); //
|
||
|
|
|
||
|
|
Port_changed_flag = true;
|
||
|
|
|
||
|
|
if(Cur_Mode == BROADCAST)
|
||
|
|
LD_Flag = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
void Select_Next_Mode()
|
||
|
|
{
|
||
|
|
// Save currently selected mode
|
||
|
|
Old_Mode = Cur_Mode;
|
||
|
|
Cur_Mode = Next_Available_Mode(Cur_Mode); // find next Mode available
|
||
|
|
|
||
|
|
// if(Cur_Mode != Old_Mode)
|
||
|
|
// Set_Up_New_Mode();
|
||
|
|
|
||
|
|
// Display_Mode(Cur_Mode); // Display the currently selected mode
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
void Set_Up_New_Mode()
|
||
|
|
{
|
||
|
|
if (Old_Mode > 0)
|
||
|
|
{
|
||
|
|
mode_Array[Old_Mode].Selected = false;
|
||
|
|
mode_Array[Cur_Mode].Selected = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
uint8_t Next_Available_Mode(uint8_t mode_tmp)
|
||
|
|
{
|
||
|
|
|
||
|
|
uint8_t found = false;
|
||
|
|
uint8_t i;
|
||
|
|
|
||
|
|
// mode_tmp = Cur_Mode;
|
||
|
|
|
||
|
|
if (mode_tmp < MODE_MAX_NUM - 1)
|
||
|
|
mode_tmp++;
|
||
|
|
else
|
||
|
|
mode_tmp = 0;
|
||
|
|
|
||
|
|
for(i=0; i < MODE_MAX_NUM - 1; i++)
|
||
|
|
{
|
||
|
|
if(mode_Array[mode_tmp].Selected > 0)
|
||
|
|
{
|
||
|
|
found = 1;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
if (mode_tmp < MODE_MAX_NUM - 1)
|
||
|
|
mode_tmp++;
|
||
|
|
else
|
||
|
|
mode_tmp= 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
return(mode_tmp);
|
||
|
|
}
|
||
|
|
|
||
|
|
void Display_available_Modes(void)
|
||
|
|
{
|
||
|
|
// if (DC_Available())
|
||
|
|
// {
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
|
||
|
|
void Select_All_Modes()
|
||
|
|
{
|
||
|
|
uint8_t i;
|
||
|
|
|
||
|
|
for(i = 0;i < MODE_MAX_NUM-1; i++)
|
||
|
|
mode_Array[i].Selected = true;
|
||
|
|
|
||
|
|
}
|