Fra Hougaard
// Akvariecomputer - akvarie.h
#ifndef _AKVARIE_H
#define _AKVARIE_H
#include <pic18.h>
#include "time.h"
#define MAGICCHAR 115
#define TYPE_ONOFF 1
#define TYPE_FLOAT2 2
#define TYPE_INTEGER 3
#define TYPE_PROBE 4
#define TYPE_TIME 5
#define TYPE_AUTOMATION 6
#define TYPE_POWER 7
#define PROBE_OFF 255
#define PROBE_PH 0
#define PROBE_MV 1
#define PROBE_MS 2
#define PROBE_TEMP 3
// Knapper
#define KeyUp !RB2
#define KeyDown !RB1
#define KeyLeft !RB0
#define KeyRight !RB3
#define KeyEnter !RB4
typedef struct Automation {
int No;
char MagicChar;
char Type[10];
// Light
// Osmolator
// Ozonizer
union {
struct
{
int StartTime;
int StopTime;
int PowerNo;
} Light;
struct
{
int PowerNo;
char Input[2][5];
} Osmolator;
struct
{
int RedoxMaxLevel;
int PowerNo;
} Ozonizer;
struct
{
int StartTime;
int StopTime;
float CutOffpH;
int PowerNo;
} CalciumReactor;
struct
{
int Hour;
int Minute;
int Seconds;
int PowerNo;
} DosingPump;
} Data;
} Automation;
typedef struct AkvarieInfo {
char MagicChar;
// Time
unsigned char Clock[7];
unsigned int Time;
// Setup
char ProbeSetup[4][4];
char PowerPanel[4];
char Input1[4];
char Input2[4];
// values
char Power[4][4];
float Probe[4];
// Calibration
float Probe_Cali[4][2];
float Probe_Value[4][2];
float Probe_A[4];
float Probe_B[4];
} AkvarieInfo;
extern AkvarieInfo AI;
extern Automation CA;
extern int CurrentAutomationNo;
// General functions
void FatalError(char i,char i2);
char ErrorMsg(char *Message,char No);
// Power
void SetPower(char No,char Value);
void UpdatePowers(void);
// Calibration
char Calibrate(char Type);
// RealTimeClock
void SetClock(void);
void ReadRTC(void);
// Menu
char OpenMenu(char *Menu[], void *Data[],const char *Types);
char EditOption(char *Menu[], const void *Data[],const char *Types,signed char UseMenu,char Refresh);
void MenuHandler(void);
// AD
int ReadAD(unsigned char PortNo);
float ReadProbe(char No);
char GetProbeType(char Probe);
// Trigger
char ReadAutomation(int No);
char WriteAutomation(int No);
void PerformAutomation(void);
void InitAutomation(int No);
void EditAutomation(int No);
void NewAutomation(void);
extern const char* TriggerTypes[];
#endif