opensend/Source/System.h

119 lines
3.3 KiB
C

#ifndef __SYSTEM_HEADER__
#define __SYSTEM_HEADER__
/* **************************************
* Includes *
* **************************************/
#include "Global_Inc.h"
#include "Gfx.h"
#include "Serial.h"
/* **************************************
* Defines *
* **************************************/
#define TIMER_PRESCALER_1_SECOND 10
#define TIMER_PRESCALER_1_MINUTE (TIMER_PRESCALER_1_SECOND * 60)
/* **************************************
* Global Prototypes *
* **************************************/
// Calls PSXSDK init routines
void SystemInit(void);
// Sets default VSync (only sets flag to true and increases global_timer)
void ISR_SystemDefaultVBlank(void);
void SystemSetBusyFlag(bool value);
// Calls srand() using current global_timer value as seed
void SystemSetRandSeed(void);
// Returns VSync flag value
bool SystemRefreshNeeded(void);
// Loads a file into system's internal buffer
bool SystemLoadFile(char*fname);
// Loads a file into desired buffer
bool SystemLoadFileToBuffer(char* fname, uint32_t init_pos, uint8_t* buffer, uint32_t szBuffer);
// Clears VSync flag after each frame
void SystemDisableScreenRefresh(void);
// Returns file buffer address
uint8_t* SystemGetBufferAddress(void);
// Tells whether srand() has been called using a pseudo-random value
bool SystemIsRandSeedSet(void);
// Stops program flow during X cycles
void SystemWaitCycles(uint32_t cycles);
// 1 cycle-length flag with a frequency of 1 Hz
bool System1SecondTick(void);
// 1 cycle-length flag with a frequency of 2 Hz
bool System500msTick(void);
// 1 cycle-length flag with a frequency of 10 Hz
bool System100msTick(void);
// Returns random value between given minimum and maximum values
uint32_t SystemRand(uint32_t min, uint32_t max);
// Increases global timer by 1 step
void SystemIncreaseGlobalTimer(void);
// Sets value to emergency mode flag
void SystemSetEmergencyMode(bool value);
// Returns emergency mode flag state
bool SystemGetEmergencyMode(void);
// (Experimental)
uint64_t SystemGetGlobalTimer(void);
// Returns whether critical section of code is being entered
volatile bool SystemIsBusy(void);
// Returns whether indicated value is contained inside buffer
bool SystemContains_u8(uint8_t value, uint8_t* buffer, size_t sz);
// Overload for uint16_t
bool SystemContains_u16(uint16_t value, uint16_t* buffer, size_t sz);
// Reportedly, sets all timer data to zero.
void SystemResetTimers(void);
// To be called every cycle (i.e.: inside GfxDrawScene() ).
void SystemUserTimersHandler(void);
// Looks for string "str" inside a string array pointed to by "array".
// Returns index inside string array on success, -1 if not found.
int32_t SystemIndexOfStringArray(char* str, char** array);
// Function overload for uint16_t data type.
int32_t SystemIndexOf_U16(uint16_t value, uint16_t* array, uint32_t sz);
// Function overload for uint8_t data type.
int32_t SystemIndexOf_U8(uint8_t value, uint8_t* array, uint32_t from, uint32_t sz);
void SystemCyclicHandler(void);
size_t SystemGetBufferSize(void);
void SystemClearBuffer(void);
void SystemDisableVBlankInterrupt(void);
void SystemEnableVBlankInterrupt(void);
/* **************************************
* Global Variables *
* **************************************/
#endif //__SYSTEM_HEADER__