/*
  Main.h
  Definities, vars en includes voor Grotendikken's brein

  Pros 2007 ... 2008
*/


#define F_CPU 16000000UL

#define delay(x) _delay_loop_1(x)

#define reply_OK() uart_sendstr_P("OK\n")
#define PRG_RDB(x) pgm_read_byte(x)


#define EENHEDEN 88
#define ERR 77
#define HONDERDSTEN 99
#define MS100 13
#define MS1000 128
#define OFF 33
#define OK 0
#define ON  22
#define FREQ 60
#define PULS 61
#define SW_START 62
#define SW_END 63
#define SW_DELAY 64
#define SW_STEP 65
#define SWEEP 66
#define TXT 1

// Commando's voor Madwizard; ze moeten gelijk zijn aan hetgeen in Madwizard.c gedefinieerd is!
#define PWM 0x02
#define MAXCNT 0x03
#define PRESC 0x04

#define SHIFTDDR  DDRB
#define SHIFTPORT PORTB
#define MW_DATA PB4
#define MW_INT0 PB3
#define MW_INT1 PB2
#define MW_RST  PB1

#define MCLK        50000000UL
#define PH_MAX      4294967296UL
#define DDS_MAX     1800000000UL
#define DDS_MIN     800000000UL
#define DDS_D_PORT  PORTB
#define DDS_D_DDR   DDRB
#define DDS_C_PORT  PORTB
#define DDS_C_DDR   DDRB
#define DDS_E_PORT  PORTD
#define DDS_E_DDR   DDRD
#define DDS_CLK     PB6
#define DDS_D       PB7
#define DDS_EN      PD4

#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <compat/deprecated.h>
#include <util/delay.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef P
#define P(s) ({static const char c[] __attribute__ ((progmem)) = s;c;})
#endif


char *val, *ptrcmd;
char txt_buffer[128];
char key_buffer[32];
char *key_ptr;
int result;
unsigned int FSELpause_timekey_time;
unsigned long W_DDSW_DDS_startW_DDS_endnew_freq;
unsigned char KB[16] = { 369'C'2580147'.''u''d''M''E' };
unsigned char linestart[5] = { 00442084 };
unsigned char hextekens[16] = "0123456789ABCDEF";
unsigned char KB_mode = FREQ;
unsigned char ijxyrxresultstatusKeyF_modeF_honderdstenFH_vlag;
unsigned int tsweepdelay;
unsigned long F_eenheden;                       // Gewenste frequentie, via het KB opgegeven
volatile unsigned int M_maxcnt;                 // Instelling voor Madwizard (ICR1)
volatile unsigned int M_presc;                  // Instelling voor Madwizard (TCCR1B)
volatile unsigned int M_pwm;                    // Instelling voor Madwizard (OCR1B)
volatile double F_OUT;                          // Gewenste frequentie
volatile double F_DDS;                          // DDS-frequentie
volatile double FLOAT;                          // tmp voor floats
double pulsbreedtesweep_startsweep_endsweep_step;

#include "Routines.c"
#include "UART.c"
#include "LCD.c"
#include "SHIFT.c"
#include "DDS.c"
#include "Version.c"