Akvarie.h

Fra Hougaard

Skift til: Navigation, Søgning
// 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
Personlige værktøjer