]> cloudbase.mooo.com Git - irmp.git/blob - irmpsystem.h
07e4ef1813e3a43e840c60126afb67e5da5f7af8
[irmp.git] / irmpsystem.h
1 /*---------------------------------------------------------------------------------------------------------------------------------------------------
2 * irmpsystem.h - system specific includes and defines
3 *
4 * Copyright (c) 2009-2015 Frank Meyer - frank(at)fli4l.de
5 *
6 * $Id: irmpsystem.h,v 1.19 2015/11/10 08:39:28 fm Exp $
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *---------------------------------------------------------------------------------------------------------------------------------------------------
13 */
14
15 #ifndef _IRMPSYSTEM_H_
16 #define _IRMPSYSTEM_H_
17
18 #if !defined(_IRMP_H_) && !defined(_IRSND_H_)
19 # error please include only irmp.h or irsnd.h, not irmpsystem.h
20 #endif
21
22 #if defined(__18CXX) // Microchip PIC C18 compiler
23 # define PIC_C18
24 #elif defined(__XC8) // PIC XC8 compiler
25 # include <xc.h>
26 # define PIC_C18
27 #elif defined(__PCM__) || defined(__PCB__) || defined(__PCH__) // CCS PIC compiler
28 # define PIC_CCS
29 #elif defined(STM32L1XX_MD) || defined(STM32L1XX_MDP) || defined(STM32L1XX_HD) // ARM STM32
30 # include <stm32l1xx.h>
31 # define ARM_STM32
32 # define ARM_STM32L1XX
33 # define F_CPU (SysCtlClockGet())
34 #elif defined(STM32F10X_LD) || defined(STM32F10X_LD_VL) \
35 || defined(STM32F10X_MD) || defined(STM32F10X_MD_VL) \
36 || defined(STM32F10X_HD) || defined(STM32F10X_HD_VL) \
37 || defined(STM32F10X_XL) || defined(STM32F10X_CL) // ARM STM32
38 # include <stm32f10x.h>
39 # define ARM_STM32
40 # define ARM_STM32F10X
41 # define F_CPU (SysCtlClockGet())
42 #elif defined(STM32F4XX) // ARM STM32
43 # include <stm32f4xx.h>
44 # define ARM_STM32
45 # define ARM_STM32F4XX
46 #elif defined(__SDCC_stm8) // STM8
47 # define SDCC_STM8
48 #elif defined(TARGET_IS_BLIZZARD_RA2) // TI Stellaris (tested on Stellaris Launchpad with Code Composer Studio)
49 # define STELLARIS_ARM_CORTEX_M4
50 # define F_CPU (SysCtlClockGet())
51 #elif defined(unix) || defined(WIN32) || defined(__APPLE__) // Unix/Linux or Windows or Apple
52 # define UNIX_OR_WINDOWS
53 #else
54 # define ATMEL_AVR // ATMEL AVR
55 #endif
56
57 #include <string.h>
58
59 #ifdef UNIX_OR_WINDOWS // Analyze on Unix/Linux or Windows
60 # include <stdio.h>
61 # include <stdlib.h>
62 # define F_CPU 8000000L
63 # define ANALYZE
64 # ifdef unix
65 # include <stdint.h>
66 # else
67 typedef unsigned char uint8_t;
68 typedef unsigned short uint16_t;
69 # endif
70 #endif
71
72
73 #if defined(ATMEL_AVR)
74 # include <stdint.h>
75 # include <stdio.h>
76 # include <avr/io.h>
77 # include <util/delay.h>
78 # include <avr/pgmspace.h>
79 # include <avr/interrupt.h>
80 # define IRSND_OC2 0 // OC2
81 # define IRSND_OC2A 1 // OC2A
82 # define IRSND_OC2B 2 // OC2B
83 # define IRSND_OC0 3 // OC0
84 # define IRSND_OC0A 4 // OC0A
85 # define IRSND_OC0B 5 // OC0B
86
87 # define IRSND_XMEGA_OC0A 0 // OC0A
88 # define IRSND_XMEGA_OC0B 1 // OC0B
89 # define IRSND_XMEGA_OC0C 2 // OC0C
90 # define IRSND_XMEGA_OC0D 3 // OC0D
91 # define IRSND_XMEGA_OC1A 4 // OC1A
92 # define IRSND_XMEGA_OC1B 5 // OC1B
93
94 #elif defined(STELLARIS_ARM_CORTEX_M4)
95
96 # include "inc/hw_ints.h"
97 # include "inc/hw_memmap.h"
98 # include "inc/hw_types.h"
99 # include "inc/hw_gpio.h"
100 # include "driverlib/fpu.h"
101 # include "driverlib/sysctl.h"
102 # include "driverlib/interrupt.h"
103 # include "driverlib/gpio.h"
104 # include "driverlib/rom.h"
105 # include "driverlib/systick.h"
106 # include "driverlib/pin_map.h"
107 # include "driverlib/timer.h"
108 # define PROGMEM
109 # define memcpy_P memcpy
110 # define APP_SYSTICKS_PER_SEC 32
111
112 #elif defined(ARM_STM32F10X)
113
114 # include "stm32f10x_gpio.h"
115 # include "stm32f10x_rcc.h"
116 # include "stm32f10x_tim.h"
117 # include "misc.h"
118 # define PROGMEM
119 # define memcpy_P memcpy
120
121 #elif defined(SDCC_STM8)
122
123 # include "stm8s.h"
124 # define PROGMEM
125 # define memcpy_P memcpy
126 # define __attribute__(x)
127 # define uint_fast8_t uint8_t
128 # define uint_fast16_t uint16_t
129
130 #else
131
132 # define PROGMEM
133 # define memcpy_P memcpy
134
135 #endif
136
137 #if defined(PIC_CCS) || defined(PIC_C18) || defined(ARM_STM32) || defined(STELLARIS_ARM_CORTEX_M4)
138 typedef unsigned char uint8_t;
139 typedef unsigned short uint16_t;
140 #endif
141
142 #if defined (PIC_C18) // PIC C18 or XC8 compiler
143 # include <p18cxxx.h> // main PIC18 h file
144 #ifndef __XC8
145 # include <timers.h> // timer lib
146 # include <pwm.h> // pwm lib
147 #endif
148 # define IRSND_PIC_CCP1 1 // PIC C18 RC2 = PWM1 module
149 # define IRSND_PIC_CCP2 2 // PIC C18 RC1 = PWM2 module
150 #endif
151
152 #ifndef TRUE
153 # define TRUE 1
154 # define FALSE 0
155 #endif
156
157 typedef struct __attribute__ ((__packed__))
158 {
159 uint8_t protocol; // protocol, e.g. NEC_PROTOCOL
160 uint16_t address; // address
161 uint16_t command; // command
162 uint8_t flags; // flags, e.g. repetition
163 } IRMP_DATA;
164
165 #endif // _IRMPSYSTEM_H_