##// END OF EJS Templates
More cleanup, added subdirectories inside include dir, cleaned include tree,...
jeandet -
r72:6ad096835359 dev_alexis
parent child
Show More
@@ -0,0 +1,72
1 /*------------------------------------------------------------------------------
2 #-- This file is a part of the libuc, microcontroler library
3 #-- Copyright (C) 2011, Alexis Jeandet
4 #--
5 #-- This program is free software; you can redistribute it and/or modify
6 #-- it under the terms of the GNU General Public License as published by
7 #-- the Free Software Foundation; either version 3 of the License, or
8 #-- (at your option) any later version.
9 #--
10 #-- This program is distributed in the hope that it will be useful,
11 #-- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 #-- GNU General Public License for more details.
14 #--
15 #-- You should have received a copy of the GNU General Public License
16 #-- along with this program; if not, write to the Free Software
17 #-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 #-------------------------------------------------------------------------------
19 #-- Author : Alexis Jeandet
20 #-- Mail : alexis.jeandet@gmail.com
21 #-------------------------------------------------------------------------------*/
22 #ifndef ADS1278_H
23 #define ADS1278_H
24 #include <uhandle.h>
25
26 typedef void (*set_clkdiv_t)(int val);
27 typedef void (*set_sync_t)(int val);
28 typedef void (*set_mode0_t)(int val);
29 typedef void (*set_mode1_t)(int val);
30 typedef void (*set_fsync_t)(int val);
31 typedef int (*ready_t)();
32
33 struct ads1278Regs
34 {
35 sspDev SSP_device;
36 set_clkdiv_t set_clkdiv;
37 set_sync_t set_sync;
38 set_mode0_t set_mode0;
39 set_mode1_t set_mode1;
40 set_fsync_t set_fsync;
41 ready_t ready;
42 };
43
44 typedef struct ads1278Regs ads1278Dev;
45
46 void ads1278open(ads1278Dev* codec,sspDev dev);
47 void ads1278sample(ads1278Dev* dev);
48 void ads1278readresult(ads1278Dev* dev,unsigned int* CH1,unsigned int* CH2,unsigned int* CH3,unsigned int* CH4,unsigned int* CH5,unsigned int* CH6,unsigned int* CH7,unsigned int* CH8);
49
50 extern void bsp_ads1278_Sample();
51 extern int bsp_ads1278_Ready();
52 extern void bsp_ads1278_Synch();
53
54 #endif
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@@ -0,0 +1,86
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2011, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef CS43L22_H
23 #define CS43L22_H
24
25 #include <i2c.h>
26
27 typedef struct CS43L22_t
28 {
29 i2c_t i2cdev;
30 uint8_t devAddress;
31 }CS43L22_t;
32
33 extern int cs43l22open(CS43L22_t* dev,i2c_t i2cdev,uint8_t A0);
34 extern uint8_t cs43l22getID(CS43L22_t* dev);
35
36 #define CS43L22_I2C_ADDRESS 0x4a
37
38
39 #define CS43L22_MAP_ID 1
40 #define CS43L22_MAP_Power_Ctl_1 2
41 #define CS43L22_MAP_Power_Ctl_2 4
42 #define CS43L22_MAP_Clocking_Ctl 5
43 #define CS43L22_MAP_Interface_Ctl_1 6
44 #define CS43L22_MAP_Interface_Ctl_2 7
45 #define CS43L22_MAP_Passthrough_A 8
46 #define CS43L22_MAP_Passthrough_B 9
47 #define CS43L22_MAP_Analog_ZC_SR 0xA
48 #define CS43L22_MAP_Passthrough 0xC
49 #define CS43L22_MAP_Playback_Ctl_1 0xD
50 #define CS43L22_MAP_Misc_Ctl 0xE
51 #define CS43L22_MAP_Playback_Ctl_2 0xF
52 #define CS43L22_MAP_Passthrough_A_Vol 0x14
53 #define CS43L22_MAP_Passthrough_B_Vol 0x15
54 #define CS43L22_MAP_PCMA_Vol 0x1A
55 #define CS43L22_MAP_PCMB_Vol 0x1B
56 #define CS43L22_MAP_BEEP_Freq 0x1C
57 #define CS43L22_MAP_BEEP_Vol 0x1d
58 #define CS43L22_MAP_BEEP_Tone_Cfg 0x1E
59 #define CS43L22_MAP_Tone_Ctl 0x1F
60 #define CS43L22_MAP_Master_A_Vol 0x20
61 #define CS43L22_MAP_Master_B_Vol 0x21
62 #define CS43L22_MAP_Headphone_A_Vol 0x22
63 #define CS43L22_MAP_Headphone_B_Vol 0x23
64 #define CS43L22_MAP_Speaker_A_Vol 0x24
65 #define CS43L22_MAP_Speaker_B_Vol 0x25
66 #define CS43L22_MAP_Channel_Mixer 0x26
67 #define CS43L22_MAP_Limit_Ctl_1 0x27
68 #define CS43L22_MAP_Limit Ctl_2 0x28
69 #define CS43L22_MAP_Limiter_Attack 0x29
70 #define CS43L22_MAP_Overflow_And_Clock_Status 0x2E
71 #define CS43L22_MAP_Battery_Compensation 0x2F
72 #define CS43L22_MAP_VP_Battery_Level 0x30
73 #define CS43L22_MAP_Speaker_Status 0x31
74 #define CS43L22_MAP_Temperature_Monitor_Control 0x32
75 #define CS43L22_MAP_Thermal_Foldback 0x33
76 #define CS43L22_MAP_Charge_Pump_Frequency 0x34
77
78
79 #endif
80
81
82
83
84
85
86
@@ -0,0 +1,98
1 /*------------------------------------------------------------------------------
2 #-- This file is a part of the libuc, microcontroler library
3 #-- Copyright (C) 2011, Alexis Jeandet
4 #--
5 #-- This program is free software; you can redistribute it and/or modify
6 #-- it under the terms of the GNU General Public License as published by
7 #-- the Free Software Foundation; either version 3 of the License, or
8 #-- (at your option) any later version.
9 #--
10 #-- This program is distributed in the hope that it will be useful,
11 #-- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 #-- GNU General Public License for more details.
14 #--
15 #-- You should have received a copy of the GNU General Public License
16 #-- along with this program; if not, write to the Free Software
17 #-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 #-------------------------------------------------------------------------------
19 #-- Author : Alexis Jeandet
20 #-- Mail : alexis.jeandet@member.fsf.org
21 #-------------------------------------------------------------------------------*/
22 #ifndef VS10XX_H
23 #define VS10XX_H
24 #include <spi.h>
25
26 #define VSMODE 0
27 #define VSSTATUS 1
28 #define VSBASS 2
29 #define VSCLOCKF 3
30 #define VSDECODE_TIME 4
31 #define VSAUDATA 5
32 #define VSWRAM 6
33 #define VSWRAMADDR 7
34 #define VSHDAT0 8
35 #define VSHDAT1 9
36 #define VSAIADDR 0xA
37 #define VSVOL 0xB
38 #define VSAICTRL0 0xC
39 #define VSAICTRL1 0xD
40 #define VSAICTRL2 0xE
41 #define VSAICTRL3 0xF
42
43 // TODO real generic VS10XX driver + plugin and patch loader
44
45 typedef enum VS10XXVER_en
46 {
47 UNKNOWN,
48 VS1001,
49 VS1011,
50 VS1002,
51 VS1003,
52 VS1053,
53 VS1033,
54 VS1103
55 }VS10XXVER_en;
56
57 typedef struct vs10XXDev
58 {
59 spi_t SPIdev;
60 void (*setxCS)(char);
61 void (*setxRST)(char);
62 void (*setxDCS)(char);
63 int (*getDREQ)();
64 VS10XXVER_en VERSION;
65 }vs10XXDev;
66
67
68 void vs10XXopen(vs10XXDev* codec,spi_t dev, void (*setxCS)(char),void (*setxRST)(char),void (*setxDCS)(char),int (*getDREQ)());
69 void vs10XXsoftreset(vs10XXDev* dev);
70 int vs10XXcmdread(vs10XXDev* dev,char address);
71 void vs10XXcmdwrite(vs10XXDev* dev,char address,int value);
72 void vs10XXstream32bytes(vs10XXDev* dev,char* buffer);
73 void vs10XXsetCansel(vs10XXDev* dev);
74 int vs10XXcanselAccepted(vs10XXDev* dev);
75 void vs10XXsoftReset(vs10XXDev* dev);
76 //extern void vs10XXclearXCS();
77 //extern void vs10XXsetXCS();
78 //extern int vs10XXDREQ();
79
80 #endif //VS10XX_H
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
@@ -0,0 +1,55
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2011, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 #ifndef B24LC0X_H
23 #define B24LC0X_H
24
25 #include <i2c.h>
26
27 typedef struct eeprom24lc0xDev
28 {
29 i2c_t iicdev;
30 unsigned char devAddress;
31 unsigned char size;
32 }eeprom24lc0xDev;
33
34
35
36 extern void eeprom24lc0xopen(eeprom24lc0xDev* dev,i2c_t iicdev,unsigned char A0_A1_A2_val,unsigned int size);
37
38 extern void eeprom24lc0xpagewrite(eeprom24lc0xDev* dev,unsigned char address,unsigned char* page);
39 extern void eeprom24lc0xpageread(eeprom24lc0xDev* dev,unsigned char address,unsigned char* page);
40 extern void eeprom24lc0xbytewrite(eeprom24lc0xDev* dev,unsigned char address,unsigned char data);
41 extern unsigned char eeprom24lc0xbyteread(eeprom24lc0xDev* dev,unsigned char address);
42 extern void eeprom24lc0xreadn(eeprom24lc0xDev* dev,unsigned char address,unsigned char* data, unsigned int count);
43 extern void eeprom24lc0xwriten(eeprom24lc0xDev* dev,unsigned char address,unsigned char* data, unsigned int count);
44
45
46
47
48 #endif
49
50
51
52
53
54
55
@@ -0,0 +1,73
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 #ifndef N25Q128_H
23 #define N25Q128_H
24
25 #include <spi.h>
26
27 typedef struct eepromN25Q128Dev
28 {
29 spi_t spidev;
30 void (*select)(int sel);
31 void (*writeprotect)(int wp);
32 void (*holdreset)(int hr);
33 }eepromN25Q128Dev;
34
35 #define N25Q128_PAGE_SZ 256
36 #define N25Q128_CAPACITY_IN_BYTES (1024*1024*16) /*16MB*/
37
38 #define N25Q128_READID 0x9E
39 #define N25Q128_READ 0x03
40 #define N25Q128_FASTREAD 0x0B
41 #define N25Q128_DOFR 0x3B
42 #define N25Q128_DIOFR 0xBB
43 #define N25Q128_QOFR 0x6B
44 #define N25Q128_QIOFR 0xEB
45 #define N25Q128_ROTP 0x4B
46 #define N25Q128_WREN 0x06
47 #define N25Q128_WRDI 0x04
48 #define N25Q128_PP 0x02
49
50
51
52
53
54 extern void eepromN25Q128open(eepromN25Q128Dev* dev,spi_t spidev,void (*select)(int sel),void (*writeprotect)(int wp),void (*holdreset)(int hr));
55 extern void eepromN25Q128pagewrite(eepromN25Q128Dev* dev,uint32_t address,unsigned char* page);
56 extern void eepromN25Q128pageread(eepromN25Q128Dev* dev,uint32_t address,unsigned char* page);
57 extern void eepromN25Q128bytewrite(eepromN25Q128Dev* dev,uint32_t address,unsigned char data);
58 extern unsigned char eepromN25Q128byteread(eepromN25Q128Dev* dev,uint32_t address);
59 extern void eepromN25Q128readn(eepromN25Q128Dev* dev,uint32_t address,unsigned char* data, unsigned int count);
60 extern void eepromN25Q128writen(eepromN25Q128Dev* dev,uint32_t address,unsigned char* data, unsigned int count);
61 extern void eepromN25Q128enablewrite(eepromN25Q128Dev* dev);
62
63
64
65
66 #endif
67
68
69
70
71
72
73
@@ -0,0 +1,62
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef SDCARD_SDIO_H
23 #define SDCARD_SDIO_H
24 #include <sdcard.h>
25
26 extern void sdcardsdiomake(sdcardDev* sdcard,UHANDLE phy,void (*rcvr_mmc) (UHANDLE,char *,uint32_t ),void (*xmit_mmc) (UHANDLE,const char *,uint32_t ),void (*setspeed) (UHANDLE phy,uint32_t speed),uint32_t (*getspeed) (UHANDLE phy));
27 extern void sdcardsdiomakeblkdev(blkdevice* dev,sdcardDev* sdcard, blkdevselect_t select,blkdevpower_t power,blkdevdetect_t detect,blkdevwriteprotected_t writeprotected);
28
29
30 #endif //SDCARD_SDIO_H
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@@ -0,0 +1,63
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef SDCARD_SPI_H
23 #define SDCARD_SPI_H
24 #include <sdcard.h>
25
26
27 extern void sdcardspimake(sdcardDev* sdcard,UHANDLE phy,void (*rcvr_mmc) (UHANDLE,char *,uint32_t ),void (*xmit_mmc) (UHANDLE,const char *,uint32_t ),void (*setspeed) (UHANDLE phy,uint32_t speed),uint32_t (*getspeed) (UHANDLE phy));
28 extern void sdcardspimakeblkdev(blkdevice* dev,sdcardDev* sdcard, blkdevselect_t select,blkdevpower_t power,blkdevdetect_t detect,blkdevwriteprotected_t writeprotected);
29
30
31 #endif
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@@ -0,0 +1,104
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 #ifndef SDCARD_H
23 #define SDCARD_H
24 #include <blkdevice.h>
25
26 /* MMC/SD command */
27 #define CMD0 (0) /* GO_IDLE_STATE */
28 #define CMD1 (1) /* SEND_OP_COND (MMC) */
29 #define ACMD41 (0x80+41) /* SEND_OP_COND (SDC) */
30 #define CMD8 (8) /* SEND_IF_COND */
31 #define CMD9 (9) /* SEND_CSD */
32 #define CMD10 (10) /* SEND_CID */
33 #define CMD12 (12) /* STOP_TRANSMISSION */
34 #define ACMD13 (0x80+13) /* SD_STATUS (SDC) */
35 #define CMD16 (16) /* SET_BLOCKLEN */
36 #define CMD17 (17) /* READ_SINGLE_BLOCK */
37 #define CMD18 (18) /* READ_MULTIPLE_BLOCK */
38 #define CMD23 (23) /* SET_BLOCK_COUNT (MMC) */
39 #define ACMD23 (0x80+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
40 #define CMD24 (24) /* WRITE_BLOCK */
41 #define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */
42 #define CMD32 (32) /* ERASE_ER_BLK_START */
43 #define CMD33 (33) /* ERASE_ER_BLK_END */
44 #define CMD38 (38) /* ERASE */
45 #define CMD55 (55) /* APP_CMD */
46 #define CMD58 (58) /* READ_OCR */
47
48 /* Card type flags (CardType) */
49 #define CT_MMC 0x01 /* MMC ver 3 */
50 #define CT_SD1 0x02 /* SD ver 1 */
51 #define CT_SD2 0x04 /* SD ver 2 */
52 #define CT_SDC (CT_SD1|CT_SD2) /* SD */
53 #define CT_BLOCK 0x08 /* Block addressing */
54
55 struct sdcard_str
56 {
57 UHANDLE phy;
58 int (*rcvr_mmc) (UHANDLE phy,char *buff,uint32_t bc);
59 int (*xmit_mmc) (UHANDLE phy,const char *buff,uint32_t bc);
60 int (*setspeed) (UHANDLE phy,uint32_t speed);
61 uint32_t (*getspeed) (UHANDLE phy);
62 DSTATUS Stat;
63 char CardType;
64 };
65
66 typedef volatile struct sdcard_str sdcardDev;
67
68 //extern void sdcardmake(sdcardDev* sdcard,UHANDLE phy,void (*rcvr_mmc) (UHANDLE,char *,uint32_t ),void (*xmit_mmc) (UHANDLE,const char *,uint32_t ),void (*setspeed) (UHANDLE phy,uint32_t speed),uint32_t (*getspeed) (UHANDLE phy));
69 //extern void sdcardmakeblkdev(blkdevice* dev,sdcardDev* sdcard, blkdevselect_t select,blkdevpower_t power,blkdevdetect_t detect,blkdevwriteprotected_t writeprotected);
70
71
72 #endif
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
@@ -0,0 +1,128
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef BLKDEVICE_H
23 #define BLKDEVICE_H
24 #include <uhandle.h>
25 /* Disk Status Bits (DSTATUS) */
26
27 #define STA_NOINIT 0x01 /* Drive not initialized */
28 #define STA_NODISK 0x02 /* No medium in the drive */
29 #define STA_PROTECT 0x04 /* Write protected */
30
31
32 /* Command code for disk_ioctrl fucntion */
33 /* Generic ioctl command (defined for FatFs) */
34 #define CTRL_SYNC 0 /* Flush disk cache (for write functions) */
35 #define GET_SECTOR_COUNT 1 /* Get media size (for only f_mkfs()) */
36 #define GET_SECTOR_SIZE 2 /* Get sector size (for multiple sector size (_MAX_SS >= 1024)) */
37 #define GET_BLOCK_SIZE 3 /* Get erase block size (for only f_mkfs()) */
38 #define CTRL_ERASE_SECTOR 4 /* Force erased a block of sectors (for only _USE_ERASE) */
39
40 /* Generic ioctl command */
41 #define CTRL_POWER 5 /* Get/Set power status */
42 #define CTRL_LOCK 6 /* Lock/Unlock media removal */
43 #define CTRL_EJECT 7 /* Eject media */
44
45 /* MMC/SDC specific ioctl command */
46 #define MMC_GET_TYPE 10 /* Get card type */
47 #define MMC_GET_CSD 11 /* Get CSD */
48 #define MMC_GET_CID 12 /* Get CID */
49 #define MMC_GET_OCR 13 /* Get OCR */
50 #define MMC_GET_SDSTAT 14 /* Get SD status */
51
52 /* ATA/CF specific ioctl command */
53 #define ATA_GET_REV 20 /* Get F/W revision */
54 #define ATA_GET_MODEL 21 /* Get model name */
55 #define ATA_GET_SN 22 /* Get serial number */
56
57 /* NAND specific ioctl command */
58 #define NAND_FORMAT 30 /* Create physical format */
59
60 /* Status of Disk Functions */
61 typedef unsigned char DSTATUS;
62
63 /* Results of Disk Functions */
64 typedef enum {
65 RES_OK = 0, /* 0: Successful */
66 RES_ERROR, /* 1: R/W Error */
67 RES_WRPRT, /* 2: Write Protected */
68 RES_NOTRDY, /* 3: Not Ready */
69 RES_PARERR /* 4: Invalid Parameter */
70 } DRESULT;
71
72 typedef volatile struct blkdevice* blkdeviceptr;
73
74 typedef void (*blkdevselect_t)(char) ;
75 typedef void (*blkdevpower_t)(char) ;
76 typedef char (*blkdevdetect_t)() ;
77 typedef char (*blkdevwriteprotected_t)() ;
78 typedef DRESULT (*blkdevwrite_t)(blkdeviceptr _this,const char *buff,unsigned long sector,char count) ;
79 typedef DRESULT (*blkdevread_t)(blkdeviceptr _this,char *buff,unsigned long sector,char count) ;
80 typedef DRESULT (*blkdevioctl_t)(blkdeviceptr _this,char ctrl,void *buff) ;
81 typedef DSTATUS (*blkdevinitialize_t)(blkdeviceptr _this) ;
82 typedef DSTATUS (*blkdevstatus_t) (blkdeviceptr _this) ;
83
84 typedef struct blkdevice
85 {
86 UHANDLE phy;
87 unsigned int size;
88 unsigned int MaxSpeed;
89 unsigned char Version;
90 blkdevselect_t select;
91 blkdevpower_t power;
92 blkdevdetect_t detect;
93 blkdevwriteprotected_t writeprotected;
94 blkdevwrite_t write;
95 blkdevread_t read;
96 blkdevioctl_t ioctl;
97 blkdevinitialize_t initialize;
98 blkdevstatus_t status;
99 }blkdevice;
100
101
102
103
104
105
106 #endif
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
@@ -0,0 +1,194
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 #ifndef FAT32_H
23 #define FAT32_H
24 #include <mbr.h>
25 #include <libucfs.h>
26 #include <ucdirent.h>
27 //#include <stdint.h>
28 /*BPB (Boot Sector) Offsets */
29
30 #define BS_jmpBootoff 0
31 #define BS_OEMNameoff 3
32 #define BPB_BytsPerSecoff 11
33 #define BPB_SecPerClusoff 13
34 #define BPB_RsvdSecCntoff 14
35 #define BPB_NumFATsoff 16
36 #define BPB_RootEntCntoff 17
37 #define BPB_TotSec16off 19
38 #define BPB_Mediaoff 21
39 #define BPB_FATSz16off 22
40 #define BPB_SecPerTrkoff 24
41 #define BPB_NumHeadsoff 26
42 #define BPB_HiddSecoff 28
43 #define BPB_TotSec32off 32
44 /*FAT16*/
45 #define BS_DrvNumFAT16off 36
46 #define BS_Reserved1FAT16off 37
47 #define BS_BootSigFAT16off 38
48 #define BS_VolIDFAT16off 39
49 #define BS_VolLabFAT16off 43
50 #define BS_FilSysTypeFAT16off 54
51 /*FAT32*/
52 #define BPB_FATSz32off 36
53 #define BPB_ExtFlagsoff 40
54 #define BPB_FSVeroff 42
55 #define BPB_RootClusoff 44
56 #define BPB_FSInfooff 48
57 #define BPB_BkBootSecoff 50
58 #define BPB_Reservedoff 52
59 #define BS_DrvNumFAT32off 64
60 #define BS_Reserved1FAT32off 65
61 #define BS_BootSigFAT32off 66
62 #define BS_VolIDFAT32off 67
63 #define BS_VolLabFAT32off 71
64 #define BS_FilSysTypeFAT32off 82
65
66
67 #define DIR_Nameoff 0
68 #define DIR_Attroff 0xb
69 #define DIR_FstClusHIoff 0x14
70 #define DIR_FstClusLOoff 0x1A
71 #define DIR_FileSizeoff 0x1c
72 #define DIR_CrtTimeTenthoff 13
73 #define DIR_CrtTimeoff 14
74 #define DIR_CrtDateoff 16
75 #define DIR_LstAccDateoff 18
76 #define DIR_WrtTimeoff 22
77 #define DIR_WrtDateoff 24
78
79
80
81 #define FATBadpart 1
82 #define FATBabArg 2
83 #define FATReadErr 3
84 #define FATnoErr 0
85
86 /*
87 TODO :
88 intergrate a per BLKDEV or per partition buffer.
89 */
90 typedef struct FAT32fs
91 {
92 uint16_t BPB_BytsPerSec;
93 uint16_t BPB_RsvdSecCnt;
94 uint32_t BPB_FATSz32;
95 uint32_t BPB_RootClus;
96 uint32_t fat_begin_lba;
97 uint32_t cluster_begin_lba;
98 uint8_t BPB_SecPerClus;
99 uint8_t BPB_NumFATs;
100 char valide;
101 dikpartition* part;
102 }FAT32fs;
103
104
105 #define castUI64(val) ((uint64_t)(val))
106 #define castUI32(val) ((uint32_t)(val))
107 #define castUI16(val) ((uint16_t)(val))
108 #define castUI8(val) ((uint8_t)(val))
109
110 #define castI64(val) ((int64_t)(val))
111 #define castI32(val) ((int32_t)(val))
112 #define castI16(val) ((int16_t)(val))
113 #define castI8(val) ((int8_t)(val))
114
115 /*
116 TODO :
117 Should add global function for casting with endianness care.
118 have a look at REV, REV16, REVSH, and RBIT ARMV7m asm
119 */
120
121 #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
122 #define fat32Ui8_2_Ui32(table,lsBindex) ((uint32_t)((0xFF&(table[lsBindex]))+(0xFF00&(((uint32_t)table[lsBindex+1])<<8))+(0xFF0000&(((uint32_t)table[lsBindex+2])<<16))+(0xFF000000&(((uint32_t)table[lsBindex+3])<<24))))
123 #define fat32Ui8_2_Ui16(table,lsBindex) ((uint16_t)((0xFF&(table[lsBindex]))+(0xFF00&(((uint16_t)table[lsBindex+1])<<8))))
124 #define fat32extract16b(table, LSBOffset) (uint16_t)(( (uint16_t) ((uint8_t)table[(LSBOffset)]) ) + (uint16_t)( ((uint8_t)table[(LSBOffset)+1]) << 8 ))
125 #define fat32extract32b(table, LSBOffset) (uint32_t)(( (uint32_t) ((uint8_t)table[(LSBOffset)]) ) + (uint32_t)( ((uint8_t)table[(LSBOffset)+1]) << 8 )+ (uint32_t)( ((uint8_t)table[(LSBOffset)+2]) << 16 )+ (uint32_t)( ((uint8_t)table[(LSBOffset)+3]) << 24 ))
126 #else
127 #define fat32Ui8_2_Ui32(table,lsBindex) ((uint32_t)((0xFF&(table[lsBindex]))+(0xFF00&(((uint32_t)table[lsBindex+1])<<8))+(0xFF0000&(((uint32_t)table[lsBindex+2])<<16))+(0xFF000000&(((uint32_t)table[lsBindex+3])<<24))))
128 #define fat32Ui8_2_Ui16(table,lsBindex) ((uint16_t)((0xFF&(table[lsBindex]))+(0xFF00&(((uint16_t)table[lsBindex+1])<<8))))
129 #define fat32extract16b(table, LSBOffset) (uint16_t)(( (uint16_t) ((uint8_t)table[(LSBOffset)]) ) + (uint16_t)( ((uint8_t)table[(LSBOffset)+1]) << 8 ))
130 #define fat32extract32b(table, LSBOffset) (uint32_t)(( (uint32_t) ((uint8_t)table[(LSBOffset)]) ) + (uint32_t)( ((uint8_t)table[(LSBOffset)+1]) << 8 )+ (uint32_t)( ((uint8_t)table[(LSBOffset)+2]) << 16 )+ (uint32_t)( ((uint8_t)table[(LSBOffset)+3]) << 24 ))
131 #endif
132
133
134 /* Get the first sector lba of given cluster number*/
135 #define clusterlba(fs,cluster_number) ((uint32_t)fs->cluster_begin_lba + (((uint32_t)cluster_number) - (2)) * (uint32_t)fs->BPB_SecPerClus)
136
137 //#define fat32clusterinfatsect(fs,cluster_number) ((((uint32_t)(cluster_number))>>6) + fs->fat_begin_lba)
138 #define fat32clusterinfatsect(fs,cluster_number) ((((uint32_t)(cluster_number))>>7) + fs->fat_begin_lba)
139 #define fat32clusterinfatoff(cluster_number) (((cluster_number)&0x7F)*4)
140
141 /*Get cluster index in FAT Table from sector address*/
142 #define fat32masksectorlba(sectorlba,fs) (sectorlba)//(sectorlba & (castUI32(-1)^castUI32(fs->BPB_SecPerClus-1)))
143 #define fat32sectorlbatoclusternum(fs,sectorlba) (((fat32masksectorlba(castUI32(sectorlba),fs) -(castUI32(fs->cluster_begin_lba)))/castUI32(fs->BPB_SecPerClus))+castUI32(2))
144
145
146 #ifdef FAT32_PRIVATE
147 #define fat32sectorreadout(fs,fatsec) \
148 if((lastSecAddrs!=(fatsec)) || (lastFATFS!=(fs))) /*Check if sector already buffered*/ \
149 {\
150 if((fs)->part->phy->read((fs)->part->phy,fat32buff,(fatsec),1)!=RES_OK) \
151 {\
152 return DIRENT_ReadErr;\
153 }\
154 }\
155 lastSecAddrs=(fatsec);\
156 lastFATFS=(fs);
157 #endif
158
159 extern int fat32open(FAT32fs* fs,dikpartition* part);
160 extern int fat32mkdirent(FAT32fs* fs,ucdirent* dirent);
161 extern int fat32getVolName(FAT32fs* fs,char* Name);
162 extern int fat32getrootfirstent(ucdirent* entry);
163 extern int fat32nextdirent(ucdirent* entry);
164 extern int fat32nextsectorlba(FAT32fs* fs,uint32_t lastsector_lba,uint32_t* nextsector_lba);
165 extern int fat32prevsectorlba(FAT32fs* fs,uint32_t lastsector_lba,uint32_t *nextsector_lba);
166 extern int fat32prevsectorlba2(FAT32fs* fs,ucdirent* entry,uint32_t lastsector_lba,uint32_t *nextsector_lba);
167 extern uint32_t fat32getdirentlba(ucdirent* entry);
168 extern int fat32getdirentname(ucdirent* entry,char* nameBuffer);
169
170 #endif
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
@@ -0,0 +1,77
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef FS_H
23 #define FS_H
24 #include <blkdevice.h>
25
26 struct fs_str
27 {
28 UHANDLE fat;
29 };
30
31 typedef struct fs_str filesys_t;
32
33
34
35 #endif
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@@ -0,0 +1,71
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 #ifndef MBR_H
23 #define MBR_H
24 #include <blkdevice.h>
25
26 #define BootFlagoffset 0
27 #define TypeCodeoffset 4
28 #define LBABeginoffset 8
29 #define NumOfSecoffset 12
30
31 #define MBRBadMbr 1
32 #define MBRBabArg 2
33 #define MBRReadErr 3
34 #define MBRnoErr 0
35
36 #define isFat32(TypeCode) (((TypeCode)==0x0b)||((TypeCode)==0x0c))
37
38 typedef struct dikpartition
39 {
40 char TypeCode;
41 char valide;
42 unsigned int LBABegin;
43 unsigned int NumOfSec;
44 blkdevice* phy;
45 }dikpartition;
46
47
48 int mbropen(blkdevice* phy,dikpartition* part,char partNum);
49
50
51 #endif
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@@ -0,0 +1,131
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef UCDIRENT_H
23 #define UCDIRENT_H
24 #include <blkdevice.h>
25
26
27 #define ATTR_READ_ONLY 0x01
28 #define ATTR_HIDDEN 0x02
29 #define ATTR_SYSTEM 0x04
30 #define ATTR_VOLUME_ID 0x08
31 #define ATTR_DIRECTORY 0x10
32 #define ATTR_ARCHIVE 0x20
33 #define ATTR_LONGNAME 0x0F
34
35 #define DIRENT_EndOfDir 1
36 #define DIRENT_BabArg 2
37 #define DIRENT_ReadErr 3
38 #define DIRENT_LastSect 4
39 #define DIRENT_BadSect 5
40 #define DIRENT_noErr 0
41
42 typedef struct ucdirent* ucdirentptr;
43 typedef int (*getrootfirstent_t)(ucdirentptr entry);
44 typedef int (*nextdirent_t)(ucdirentptr entry);
45 typedef int (*getname_t)(ucdirentptr entry,char* name);
46
47 typedef struct dirent
48 {
49 unsigned char DIR_Name[16];
50 unsigned char DIR_Attr;
51 unsigned char DIR_CrtTimeTenth;
52 unsigned short DIR_CrtTime;
53 unsigned short DIR_CrtDate;
54 unsigned short DIR_LstAccDate;
55 unsigned short DIR_FstClusHI;
56 unsigned short DIR_WrtTime;
57 unsigned short DIR_WrtDate;
58 unsigned short DIR_FstClustLO;
59 unsigned int DIR_FileSize;
60 unsigned int CurrentSec;
61 unsigned char Currententry;
62 UHANDLE fs;
63 getrootfirstent_t getrootfirstent;
64 nextdirent_t nextdirent;
65 getname_t getname;
66 }dirent;
67
68 typedef struct ucdirent{
69 uint8_t DIR_Name[16];
70 uint8_t DIR_Attr;
71 uint8_t DIR_CrtTimeTenth;
72 uint16_t DIR_CrtTime;
73 uint16_t DIR_CrtDate;
74 uint16_t DIR_LstAccDate;
75 uint16_t DIR_FstClusHI;
76 uint16_t DIR_WrtTime;
77 uint16_t DIR_WrtDate;
78 uint16_t DIR_FstClustLO;
79 uint32_t DIR_FileSize;
80 uint32_t CurrentSec;
81 uint8_t Currententry;
82 UHANDLE fs;
83 getrootfirstent_t getrootfirstent;
84 nextdirent_t nextdirent;
85 getname_t getname;
86 }ucdirent;
87
88
89
90 #define direntgetroot(dirent) (dirent).getrootfirstent(&dirent)
91 #define direntgetnext(dirent) (dirent).nextdirent(&dirent)
92
93 #endif
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
@@ -0,0 +1,51
1 /*------------------------------------------------------------------------------
2 #-- This file is a part of the libuc, microcontroler library
3 #-- Copyright (C) 2011, Alexis Jeandet
4 #--
5 #-- This program is free software; you can redistribute it and/or modify
6 #-- it under the terms of the GNU General Public License as published by
7 #-- the Free Software Foundation; either version 3 of the License, or
8 #-- (at your option) any later version.
9 #--
10 #-- This program is distributed in the hope that it will be useful,
11 #-- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 #-- GNU General Public License for more details.
14 #--
15 #-- You should have received a copy of the GNU General Public License
16 #-- along with this program; if not, write to the Free Software
17 #-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 #-------------------------------------------------------------------------------
19 #-- Author : Alexis Jeandet
20 #-- Mail : alexis.jeandet@gmail.com
21 #-------------------------------------------------------------------------------*/
22 #ifndef HEXVIEWER_H
23 #define HEXVIEWER_H
24
25
26
27
28
29 extern void hexviewershow(const char* table,unsigned int size,unsigned int offset);
30
31
32 #endif
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@@ -0,0 +1,138
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 /*
23 */
24
25 #ifndef ADC_H
26 #define ADC_H
27 #include <uhandle.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33
34 typedef struct adc_t
35 {
36 void* _dev;
37 int cfg;
38 int rate;
39 }adc_t;
40
41
42 typedef enum
43 {
44 adc6bits = 0x1,
45 adc7bits = 0x2,
46 adc8bits = 0x3,
47 adc9bits = 0x4,
48 adc10bits = 0x5,
49 adc11bits = 0x6,
50 adc12bits = 0x7,
51 adc13bits = 0x8,
52 adc14bits = 0x9,
53 adc15bits = 0xA,
54 adc16bits = 0xB,
55 adc17bits = 0xC,
56 adc18bits = 0xD,
57 adc19bits = 0xE,
58 adc20bits = 0xF,
59 adc21bits = 0x10,
60 adc22bits = 0x11,
61 adc23bits = 0x12,
62 adc24bits = 0x13
63 }adcbits_t;
64
65 #define ADCBITSMASK 0xF
66
67 typedef enum
68 {
69 adcsingle = 0x00,
70 adcmaster = 0x10
71 }adcconvmode_t;
72
73 #define ADCCONVMODEMASK 0x10
74
75 typedef enum
76 {
77 spiclkinhlow = 0x00,
78 spiclkinhhigh = 0x20
79 }spiclkinhlvl_t;
80
81 #define SPICLKINHLVLMASK 0x20
82
83
84 typedef enum
85 {
86 spiclkfirstedge = 0x00,
87 spiclksecondedge = 0x40
88 }spiclkphase_t;
89
90 #define SPICLKPHASEMASK 0x40
91
92 typedef enum
93 {
94 spimsbfirst = 0x00,
95 spilsbfirst = 0x80
96 }spibitorder_t;
97
98 #define SPIBITORDERMASK 0x80
99
100
101 extern int spiopen(int count,spi_t* spidev);
102 extern int spiopenandconfig(int count,spi_t* spidev,uint32_t cfg,uint32_t speed,uint32_t MOSIpin,uint32_t MISOpin,uint32_t SCKpin,uint32_t SCSpin);
103 extern int spiclose(spi_t* spidev);
104 extern int spisetpins(spi_t* spidev,uint32_t MOSIpin,uint32_t MISOpin,uint32_t SCKpin,uint32_t SCSpin);
105 extern int spienable(spi_t* spidev);
106 extern int spidisable(spi_t* spidev);
107 extern int spisetconfig(spi_t* spidev);
108 extern int spisetspeed(spi_t* spidev, uint32_t speed);
109 extern int spisetbitorder(spi_t* spidev,spibitorder_t order);
110 extern int spisetdatabits(spi_t* spidev,spibits_t bitscnt);
111 extern int spisetclkinhlevel(spi_t* spidev,spiclkinhlvl_t level);
112 extern int spisetclkphase(spi_t* spidev,spiclkphase_t phase);
113 extern int spiputw(spi_t* spidev,uint16_t data);
114 extern uint16_t spigetw(spi_t* spidev);
115 extern int spiputs(spi_t* spidev,char* s);
116 extern int spigets(spi_t* spidev,char* s);
117 extern int spiputnw(spi_t* spidev,uint16_t* w,int n);
118 extern int spigetnw(spi_t* spidev,uint16_t* w,int n);
119 extern int spiputnc(spi_t* spidev,char* c,int n);
120 extern int spigetnc(spi_t* spidev,char* c,int n);
121 extern int spiavailiabledata(spi_t* spidev);
122
123 #ifdef __cplusplus
124 }
125 #endif
126 #endif //ADC_H
127
128
129
130
131
132
133
134
135
136
137
138
This diff has been collapsed as it changes many lines, (590 lines changed) Show them Hide them
@@ -0,0 +1,590
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22
23 /*! \file gpio.h
24 \brief GPIO api.
25
26 The gpio api gives you a standard way to drive any gpio on any processor.
27 With this api you will be able to open and configure your gpios and set/clear read them.
28
29 A simple example to drive PA0 and read PA1.
30 \code
31 // lets open PA0 and PA1
32 gpio_t mygpio1 gpioopen(PA0);
33 gpioopen(PA1);
34 mygpio1 |= gpiohighspeed | gpiooutdir | gpiopushpulltype | gpionopulltype;
35 gpiosetconfig(mygpio1);
36 //you can also configure with the pin name
37 gpiosetconfig(PA1|gpiohighspeed | gpioindir);
38 //to set PA0
39 gpioset(mygpio1);
40 //to clear it
41 gpioclr(PA0); //PA0 also works and save 4 bytes!
42 //Let read PA1 and write it to PA0
43 gpiosetval(PA0,gpiogetval(PA1));
44 \endcode
45
46 */
47 #ifndef GPIO_H
48 #define GPIO_H
49 #include <stdint.h>
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53
54
55 typedef uint32_t gpio_t;
56
57 typedef enum gpiospeed_t
58 {
59 gpiolowspeed = 0x00000,
60 gpiomediumspeed = 0x10000,
61 gpiofastspeed = 0x20000,
62 gpiohighspeed = 0x30000
63 }gpiospeed_t;
64
65
66
67 typedef enum gpiodir_t
68 {
69 gpioindir = 0x00000,
70 gpiooutdir = 0x40000,
71 gpioaf = 0x80000,
72 gpioan = 0xC0000
73 }gpiodir_t;
74
75
76
77
78 typedef enum gpioouttype_t
79 {
80 gpiopushpulltype = 0x000000,
81 gpioopendraintype = 0x100000
82 }gpioouttype_t;
83
84
85
86 typedef enum gpiopulltype_t
87 {
88 gpionopulltype = 0x000000,
89 gpiopulluptype = 0x200000,
90 gpiopulldowntype = 0x400000
91 }gpiopulltype_t;
92
93 #ifndef DOXYGEN_SHOULD_SKIP_THIS
94 #define GPIOSPEEDMASK 0x30000
95 #define GPIODIRMASK 0xC0000
96 #define GPIOOUTTYPEMASK 0x100000
97 #define GPIOPULLTYPEMASK 0x600000
98 #endif
99
100
101 extern gpio_t gpioopen(uint32_t gpio);
102 extern void gpioclose(gpio_t gpio);
103 extern void gpiosetconfig(gpio_t* gpio);
104 extern void gpiosetdir(gpio_t* gpio,gpiodir_t dir);
105 extern void gpiosetouttype(gpio_t* gpio, gpioouttype_t outtype);
106 extern void gpiosetpulltype(gpio_t* gpio,gpiopulltype_t pulltype);
107 extern void gpiosetspeed(gpio_t* gpio,gpiospeed_t speed);
108 extern void gpioset(gpio_t gpio);
109 extern void gpioclr(gpio_t gpio);
110 extern void gpiosetval(gpio_t gpio,int val);
111 extern int gpiogetval(gpio_t gpio);
112
113 #define GPIOISINPUT(gpio) (((gpio) & GPIODIRMASK)==gpioindir)
114 #define GPIOISOUTPUT(gpio) (((gpio) & GPIOSPEEDMASK)==gpiooutdir)
115
116 #define GPIOISLOWSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiolowspeed)
117 #define GPIOISMEDIUMSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiomediumspeed)
118 #define GPIOISFASTPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiofastspeed)
119 #define GPIOISHIGHSPEED(gpio) (((gpio) & GPIOSPEEDMASK)==gpiohighspeeds)
120
121 #define GPIOISPUSHPULL(gpio) (((gpio) & GPIOOUTTYPEMASK)==gpiopushpulltype)
122 #define GPIOISOPENDRAIN(gpio) (((gpio) & GPIOOUTTYPEMASK)==gpioopendraintype)
123
124 #define GPIOISNOPULL(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpionopulltype)
125 #define GPIOISPULLUP(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpiopulluptype)
126 #define GPIOISPULLDOWN(GPIO) (((gpio) & GPIOPULLTYPEMASK)==gpiopulldowntype)
127
128 #ifndef DOXYGEN_SHOULD_SKIP_THIS
129
130 #define PA0 ((0<<8)+0)
131 #define PA1 ((0<<8)+1)
132 #define PA2 ((0<<8)+2)
133 #define PA3 ((0<<8)+3)
134 #define PA4 ((0<<8)+4)
135 #define PA5 ((0<<8)+5)
136 #define PA6 ((0<<8)+6)
137 #define PA7 ((0<<8)+7)
138 #define PA8 ((0<<8)+8)
139 #define PA9 ((0<<8)+9)
140 #define PA10 ((0<<8)+10)
141 #define PA11 ((0<<8)+11)
142 #define PA12 ((0<<8)+12)
143 #define PA13 ((0<<8)+13)
144 #define PA14 ((0<<8)+14)
145 #define PA15 ((0<<8)+15)
146 #define PAX ((0<<8)+255)
147 #define PB0 ((1<<8)+0)
148 #define PB1 ((1<<8)+1)
149 #define PB2 ((1<<8)+2)
150 #define PB3 ((1<<8)+3)
151 #define PB4 ((1<<8)+4)
152 #define PB5 ((1<<8)+5)
153 #define PB6 ((1<<8)+6)
154 #define PB7 ((1<<8)+7)
155 #define PB8 ((1<<8)+8)
156 #define PB9 ((1<<8)+9)
157 #define PB10 ((1<<8)+10)
158 #define PB11 ((1<<8)+11)
159 #define PB12 ((1<<8)+12)
160 #define PB13 ((1<<8)+13)
161 #define PB14 ((1<<8)+14)
162 #define PB15 ((1<<8)+15)
163 #define PBX ((1<<8)+255)
164 #define PC0 ((2<<8)+0)
165 #define PC1 ((2<<8)+1)
166 #define PC2 ((2<<8)+2)
167 #define PC3 ((2<<8)+3)
168 #define PC4 ((2<<8)+4)
169 #define PC5 ((2<<8)+5)
170 #define PC6 ((2<<8)+6)
171 #define PC7 ((2<<8)+7)
172 #define PC8 ((2<<8)+8)
173 #define PC9 ((2<<8)+9)
174 #define PC10 ((2<<8)+10)
175 #define PC11 ((2<<8)+11)
176 #define PC12 ((2<<8)+12)
177 #define PC13 ((2<<8)+13)
178 #define PC14 ((2<<8)+14)
179 #define PC15 ((2<<8)+15)
180 #define PCX ((2<<8)+255)
181 #define PD0 ((3<<8)+0)
182 #define PD1 ((3<<8)+1)
183 #define PD2 ((3<<8)+2)
184 #define PD3 ((3<<8)+3)
185 #define PD4 ((3<<8)+4)
186 #define PD5 ((3<<8)+5)
187 #define PD6 ((3<<8)+6)
188 #define PD7 ((3<<8)+7)
189 #define PD8 ((3<<8)+8)
190 #define PD9 ((3<<8)+9)
191 #define PD10 ((3<<8)+10)
192 #define PD11 ((3<<8)+11)
193 #define PD12 ((3<<8)+12)
194 #define PD13 ((3<<8)+13)
195 #define PD14 ((3<<8)+14)
196 #define PD15 ((3<<8)+15)
197 #define PDX ((3<<8)+255)
198 #define PE0 ((4<<8)+0)
199 #define PE1 ((4<<8)+1)
200 #define PE2 ((4<<8)+2)
201 #define PE3 ((4<<8)+3)
202 #define PE4 ((4<<8)+4)
203 #define PE5 ((4<<8)+5)
204 #define PE6 ((4<<8)+6)
205 #define PE7 ((4<<8)+7)
206 #define PE8 ((4<<8)+8)
207 #define PE9 ((4<<8)+9)
208 #define PE10 ((4<<8)+10)
209 #define PE11 ((4<<8)+11)
210 #define PE12 ((4<<8)+12)
211 #define PE13 ((4<<8)+13)
212 #define PE14 ((4<<8)+14)
213 #define PE15 ((4<<8)+15)
214 #define PEX ((4<<8)+255)
215 #define PF0 ((5<<8)+0)
216 #define PF1 ((5<<8)+1)
217 #define PF2 ((5<<8)+2)
218 #define PF3 ((5<<8)+3)
219 #define PF4 ((5<<8)+4)
220 #define PF5 ((5<<8)+5)
221 #define PF6 ((5<<8)+6)
222 #define PF7 ((5<<8)+7)
223 #define PF8 ((5<<8)+8)
224 #define PF9 ((5<<8)+9)
225 #define PF10 ((5<<8)+10)
226 #define PF11 ((5<<8)+11)
227 #define PF12 ((5<<8)+12)
228 #define PF13 ((5<<8)+13)
229 #define PF14 ((5<<8)+14)
230 #define PF15 ((5<<8)+15)
231 #define PFX ((5<<8)+255)
232 #define PG0 ((6<<8)+0)
233 #define PG1 ((6<<8)+1)
234 #define PG2 ((6<<8)+2)
235 #define PG3 ((6<<8)+3)
236 #define PG4 ((6<<8)+4)
237 #define PG5 ((6<<8)+5)
238 #define PG6 ((6<<8)+6)
239 #define PG7 ((6<<8)+7)
240 #define PG8 ((6<<8)+8)
241 #define PG9 ((6<<8)+9)
242 #define PG10 ((6<<8)+10)
243 #define PG11 ((6<<8)+11)
244 #define PG12 ((6<<8)+12)
245 #define PG13 ((6<<8)+13)
246 #define PG14 ((6<<8)+14)
247 #define PG15 ((6<<8)+15)
248 #define PGX ((6<<8)+255)
249 #define PH0 ((7<<8)+0)
250 #define PH1 ((7<<8)+1)
251 #define PH2 ((7<<8)+2)
252 #define PH3 ((7<<8)+3)
253 #define PH4 ((7<<8)+4)
254 #define PH5 ((7<<8)+5)
255 #define PH6 ((7<<8)+6)
256 #define PH7 ((7<<8)+7)
257 #define PH8 ((7<<8)+8)
258 #define PH9 ((7<<8)+9)
259 #define PH10 ((7<<8)+10)
260 #define PH11 ((7<<8)+11)
261 #define PH12 ((7<<8)+12)
262 #define PH13 ((7<<8)+13)
263 #define PH14 ((7<<8)+14)
264 #define PH15 ((7<<8)+15)
265 #define PHX ((7<<8)+255)
266 #define PI0 ((8<<8)+0)
267 #define PI1 ((8<<8)+1)
268 #define PI2 ((8<<8)+2)
269 #define PI3 ((8<<8)+3)
270 #define PI4 ((8<<8)+4)
271 #define PI5 ((8<<8)+5)
272 #define PI6 ((8<<8)+6)
273 #define PI7 ((8<<8)+7)
274 #define PI8 ((8<<8)+8)
275 #define PI9 ((8<<8)+9)
276 #define PI10 ((8<<8)+10)
277 #define PI11 ((8<<8)+11)
278 #define PI12 ((8<<8)+12)
279 #define PI13 ((8<<8)+13)
280 #define PI14 ((8<<8)+14)
281 #define PI15 ((8<<8)+15)
282 #define PIX ((8<<8)+255)
283 #define PJ0 ((9<<8)+0)
284 #define PJ1 ((9<<8)+1)
285 #define PJ2 ((9<<8)+2)
286 #define PJ3 ((9<<8)+3)
287 #define PJ4 ((9<<8)+4)
288 #define PJ5 ((9<<8)+5)
289 #define PJ6 ((9<<8)+6)
290 #define PJ7 ((9<<8)+7)
291 #define PJ8 ((9<<8)+8)
292 #define PJ9 ((9<<8)+9)
293 #define PJ10 ((9<<8)+10)
294 #define PJ11 ((9<<8)+11)
295 #define PJ12 ((9<<8)+12)
296 #define PJ13 ((9<<8)+13)
297 #define PJ14 ((9<<8)+14)
298 #define PJ15 ((9<<8)+15)
299 #define PJX ((9<<8)+255)
300 #define PK0 ((10<<8)+0)
301 #define PK1 ((10<<8)+1)
302 #define PK2 ((10<<8)+2)
303 #define PK3 ((10<<8)+3)
304 #define PK4 ((10<<8)+4)
305 #define PK5 ((10<<8)+5)
306 #define PK6 ((10<<8)+6)
307 #define PK7 ((10<<8)+7)
308 #define PK8 ((10<<8)+8)
309 #define PK9 ((10<<8)+9)
310 #define PK10 ((10<<8)+10)
311 #define PK11 ((10<<8)+11)
312 #define PK12 ((10<<8)+12)
313 #define PK13 ((10<<8)+13)
314 #define PK14 ((10<<8)+14)
315 #define PK15 ((10<<8)+15)
316 #define PKX ((10<<8)+255)
317 #define PL0 ((11<<8)+0)
318 #define PL1 ((11<<8)+1)
319 #define PL2 ((11<<8)+2)
320 #define PL3 ((11<<8)+3)
321 #define PL4 ((11<<8)+4)
322 #define PL5 ((11<<8)+5)
323 #define PL6 ((11<<8)+6)
324 #define PL7 ((11<<8)+7)
325 #define PL8 ((11<<8)+8)
326 #define PL9 ((11<<8)+9)
327 #define PL10 ((11<<8)+10)
328 #define PL11 ((11<<8)+11)
329 #define PL12 ((11<<8)+12)
330 #define PL13 ((11<<8)+13)
331 #define PL14 ((11<<8)+14)
332 #define PL15 ((11<<8)+15)
333 #define PLX ((11<<8)+255)
334 #define PM0 ((12<<8)+0)
335 #define PM1 ((12<<8)+1)
336 #define PM2 ((12<<8)+2)
337 #define PM3 ((12<<8)+3)
338 #define PM4 ((12<<8)+4)
339 #define PM5 ((12<<8)+5)
340 #define PM6 ((12<<8)+6)
341 #define PM7 ((12<<8)+7)
342 #define PM8 ((12<<8)+8)
343 #define PM9 ((12<<8)+9)
344 #define PM10 ((12<<8)+10)
345 #define PM11 ((12<<8)+11)
346 #define PM12 ((12<<8)+12)
347 #define PM13 ((12<<8)+13)
348 #define PM14 ((12<<8)+14)
349 #define PM15 ((12<<8)+15)
350 #define PMX ((12<<8)+255)
351 #define PN0 ((13<<8)+0)
352 #define PN1 ((13<<8)+1)
353 #define PN2 ((13<<8)+2)
354 #define PN3 ((13<<8)+3)
355 #define PN4 ((13<<8)+4)
356 #define PN5 ((13<<8)+5)
357 #define PN6 ((13<<8)+6)
358 #define PN7 ((13<<8)+7)
359 #define PN8 ((13<<8)+8)
360 #define PN9 ((13<<8)+9)
361 #define PN10 ((13<<8)+10)
362 #define PN11 ((13<<8)+11)
363 #define PN12 ((13<<8)+12)
364 #define PN13 ((13<<8)+13)
365 #define PN14 ((13<<8)+14)
366 #define PN15 ((13<<8)+15)
367 #define PNX ((13<<8)+255)
368 #define PO0 ((14<<8)+0)
369 #define PO1 ((14<<8)+1)
370 #define PO2 ((14<<8)+2)
371 #define PO3 ((14<<8)+3)
372 #define PO4 ((14<<8)+4)
373 #define PO5 ((14<<8)+5)
374 #define PO6 ((14<<8)+6)
375 #define PO7 ((14<<8)+7)
376 #define PO8 ((14<<8)+8)
377 #define PO9 ((14<<8)+9)
378 #define PO10 ((14<<8)+10)
379 #define PO11 ((14<<8)+11)
380 #define PO12 ((14<<8)+12)
381 #define PO13 ((14<<8)+13)
382 #define PO14 ((14<<8)+14)
383 #define PO15 ((14<<8)+15)
384 #define POX ((14<<8)+255)
385 #define PP0 ((15<<8)+0)
386 #define PP1 ((15<<8)+1)
387 #define PP2 ((15<<8)+2)
388 #define PP3 ((15<<8)+3)
389 #define PP4 ((15<<8)+4)
390 #define PP5 ((15<<8)+5)
391 #define PP6 ((15<<8)+6)
392 #define PP7 ((15<<8)+7)
393 #define PP8 ((15<<8)+8)
394 #define PP9 ((15<<8)+9)
395 #define PP10 ((15<<8)+10)
396 #define PP11 ((15<<8)+11)
397 #define PP12 ((15<<8)+12)
398 #define PP13 ((15<<8)+13)
399 #define PP14 ((15<<8)+14)
400 #define PP15 ((15<<8)+15)
401 #define PPX ((15<<8)+255)
402 #define PQ0 ((16<<8)+0)
403 #define PQ1 ((16<<8)+1)
404 #define PQ2 ((16<<8)+2)
405 #define PQ3 ((16<<8)+3)
406 #define PQ4 ((16<<8)+4)
407 #define PQ5 ((16<<8)+5)
408 #define PQ6 ((16<<8)+6)
409 #define PQ7 ((16<<8)+7)
410 #define PQ8 ((16<<8)+8)
411 #define PQ9 ((16<<8)+9)
412 #define PQ10 ((16<<8)+10)
413 #define PQ11 ((16<<8)+11)
414 #define PQ12 ((16<<8)+12)
415 #define PQ13 ((16<<8)+13)
416 #define PQ14 ((16<<8)+14)
417 #define PQ15 ((16<<8)+15)
418 #define PQX ((16<<8)+255)
419 #define PR0 ((17<<8)+0)
420 #define PR1 ((17<<8)+1)
421 #define PR2 ((17<<8)+2)
422 #define PR3 ((17<<8)+3)
423 #define PR4 ((17<<8)+4)
424 #define PR5 ((17<<8)+5)
425 #define PR6 ((17<<8)+6)
426 #define PR7 ((17<<8)+7)
427 #define PR8 ((17<<8)+8)
428 #define PR9 ((17<<8)+9)
429 #define PR10 ((17<<8)+10)
430 #define PR11 ((17<<8)+11)
431 #define PR12 ((17<<8)+12)
432 #define PR13 ((17<<8)+13)
433 #define PR14 ((17<<8)+14)
434 #define PR15 ((17<<8)+15)
435 #define PRX ((17<<8)+255)
436 #define PS0 ((18<<8)+0)
437 #define PS1 ((18<<8)+1)
438 #define PS2 ((18<<8)+2)
439 #define PS3 ((18<<8)+3)
440 #define PS4 ((18<<8)+4)
441 #define PS5 ((18<<8)+5)
442 #define PS6 ((18<<8)+6)
443 #define PS7 ((18<<8)+7)
444 #define PS8 ((18<<8)+8)
445 #define PS9 ((18<<8)+9)
446 #define PS10 ((18<<8)+10)
447 #define PS11 ((18<<8)+11)
448 #define PS12 ((18<<8)+12)
449 #define PS13 ((18<<8)+13)
450 #define PS14 ((18<<8)+14)
451 #define PS15 ((18<<8)+15)
452 #define PSX ((18<<8)+255)
453 #define PT0 ((19<<8)+0)
454 #define PT1 ((19<<8)+1)
455 #define PT2 ((19<<8)+2)
456 #define PT3 ((19<<8)+3)
457 #define PT4 ((19<<8)+4)
458 #define PT5 ((19<<8)+5)
459 #define PT6 ((19<<8)+6)
460 #define PT7 ((19<<8)+7)
461 #define PT8 ((19<<8)+8)
462 #define PT9 ((19<<8)+9)
463 #define PT10 ((19<<8)+10)
464 #define PT11 ((19<<8)+11)
465 #define PT12 ((19<<8)+12)
466 #define PT13 ((19<<8)+13)
467 #define PT14 ((19<<8)+14)
468 #define PT15 ((19<<8)+15)
469 #define PTX ((19<<8)+255)
470 #define PU0 ((20<<8)+0)
471 #define PU1 ((20<<8)+1)
472 #define PU2 ((20<<8)+2)
473 #define PU3 ((20<<8)+3)
474 #define PU4 ((20<<8)+4)
475 #define PU5 ((20<<8)+5)
476 #define PU6 ((20<<8)+6)
477 #define PU7 ((20<<8)+7)
478 #define PU8 ((20<<8)+8)
479 #define PU9 ((20<<8)+9)
480 #define PU10 ((20<<8)+10)
481 #define PU11 ((20<<8)+11)
482 #define PU12 ((20<<8)+12)
483 #define PU13 ((20<<8)+13)
484 #define PU14 ((20<<8)+14)
485 #define PU15 ((20<<8)+15)
486 #define PUX ((20<<8)+255)
487 #define PV0 ((21<<8)+0)
488 #define PV1 ((21<<8)+1)
489 #define PV2 ((21<<8)+2)
490 #define PV3 ((21<<8)+3)
491 #define PV4 ((21<<8)+4)
492 #define PV5 ((21<<8)+5)
493 #define PV6 ((21<<8)+6)
494 #define PV7 ((21<<8)+7)
495 #define PV8 ((21<<8)+8)
496 #define PV9 ((21<<8)+9)
497 #define PV10 ((21<<8)+10)
498 #define PV11 ((21<<8)+11)
499 #define PV12 ((21<<8)+12)
500 #define PV13 ((21<<8)+13)
501 #define PV14 ((21<<8)+14)
502 #define PV15 ((21<<8)+15)
503 #define PVX ((21<<8)+255)
504 #define PW0 ((22<<8)+0)
505 #define PW1 ((22<<8)+1)
506 #define PW2 ((22<<8)+2)
507 #define PW3 ((22<<8)+3)
508 #define PW4 ((22<<8)+4)
509 #define PW5 ((22<<8)+5)
510 #define PW6 ((22<<8)+6)
511 #define PW7 ((22<<8)+7)
512 #define PW8 ((22<<8)+8)
513 #define PW9 ((22<<8)+9)
514 #define PW10 ((22<<8)+10)
515 #define PW11 ((22<<8)+11)
516 #define PW12 ((22<<8)+12)
517 #define PW13 ((22<<8)+13)
518 #define PW14 ((22<<8)+14)
519 #define PW15 ((22<<8)+15)
520 #define PWX ((22<<8)+255)
521 #define PX0 ((23<<8)+0)
522 #define PX1 ((23<<8)+1)
523 #define PX2 ((23<<8)+2)
524 #define PX3 ((23<<8)+3)
525 #define PX4 ((23<<8)+4)
526 #define PX5 ((23<<8)+5)
527 #define PX6 ((23<<8)+6)
528 #define PX7 ((23<<8)+7)
529 #define PX8 ((23<<8)+8)
530 #define PX9 ((23<<8)+9)
531 #define PX10 ((23<<8)+10)
532 #define PX11 ((23<<8)+11)
533 #define PX12 ((23<<8)+12)
534 #define PX13 ((23<<8)+13)
535 #define PX14 ((23<<8)+14)
536 #define PX15 ((23<<8)+15)
537 #define PXX ((23<<8)+255)
538 #define PY0 ((24<<8)+0)
539 #define PY1 ((24<<8)+1)
540 #define PY2 ((24<<8)+2)
541 #define PY3 ((24<<8)+3)
542 #define PY4 ((24<<8)+4)
543 #define PY5 ((24<<8)+5)
544 #define PY6 ((24<<8)+6)
545 #define PY7 ((24<<8)+7)
546 #define PY8 ((24<<8)+8)
547 #define PY9 ((24<<8)+9)
548 #define PY10 ((24<<8)+10)
549 #define PY11 ((24<<8)+11)
550 #define PY12 ((24<<8)+12)
551 #define PY13 ((24<<8)+13)
552 #define PY14 ((24<<8)+14)
553 #define PY15 ((24<<8)+15)
554 #define PYX ((24<<8)+255)
555 #define PZ0 ((25<<8)+0)
556 #define PZ1 ((25<<8)+1)
557 #define PZ2 ((25<<8)+2)
558 #define PZ3 ((25<<8)+3)
559 #define PZ4 ((25<<8)+4)
560 #define PZ5 ((25<<8)+5)
561 #define PZ6 ((25<<8)+6)
562 #define PZ7 ((25<<8)+7)
563 #define PZ8 ((25<<8)+8)
564 #define PZ9 ((25<<8)+9)
565 #define PZ10 ((25<<8)+10)
566 #define PZ11 ((25<<8)+11)
567 #define PZ12 ((25<<8)+12)
568 #define PZ13 ((25<<8)+13)
569 #define PZ14 ((25<<8)+14)
570 #define PZ15 ((25<<8)+15)
571 #define PZX ((25<<8)+255)
572
573 #endif
574
575 #ifdef __cplusplus
576 }
577 #endif
578 #endif //GPIO_H
579
580
581
582
583
584
585
586
587
588
589
590
@@ -0,0 +1,72
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef I2C_H
23 #define I2C_H
24 #include <streamdevices.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 typedef int i2c_t;
31
32 #define i2c1 0
33 #define i2c2 1
34 #define i2c3 2
35 #define i2c4 3
36 #define i2c5 4
37 #define i2c6 5
38 #define i2c7 6
39 #define i2c8 7
40 #define i2c9 8
41
42 extern int i2ctimeout;
43
44 extern i2c_t i2copen(int count);
45 extern i2c_t i2copenandconfig(int count ,uint32_t cfg,uint32_t speed,uint32_t SDA,uint32_t SCL);
46 extern int i2cclose(i2c_t dev);
47 extern int i2csetpins(i2c_t dev,uint32_t SDA,uint32_t SCL);
48 extern int i2cenable(i2c_t dev);
49 extern int i2cdisable(i2c_t dev);
50 //extern int i2csetconfig(i2c_t dev);
51 extern int i2csetspeed(i2c_t dev,uint32_t speed);
52 //extern int i2csetdatabits(i2c_t* dev,uartbits_t databits);
53 extern int i2cwrite(i2c_t dev,char address,char* data,int count);
54 extern int i2cread(i2c_t dev,char address,char* data,int count);
55 extern int i2cbusy(i2c_t dev);
56 extern int i2cStatusCheck(i2c_t dev,int32_t flagMask);
57 #ifdef __cplusplus
58 }
59 #endif
60 #endif //I2C_H
61
62
63
64
65
66
67
68
69
70
71
72
@@ -0,0 +1,150
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
22 /*
23 TODO:
24 Add SPI slave mode
25 Add interrupt interface
26 */
27
28 #ifndef SPI_H
29 #define SPI_H
30 #include <uhandle.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 /*
37 typedef struct spi_t
38 {
39 void* _dev;
40 int cfg;
41 int speed;
42 }spi_t;*/
43
44 typedef int spi_t;
45
46 #define spi1 ((spi_t)0)
47 #define spi2 ((spi_t)1)
48 #define spi3 ((spi_t)2)
49 #define spi4 ((spi_t)3)
50 #define spi5 ((spi_t)4)
51 #define spi6 ((spi_t)5)
52 #define spi7 ((spi_t)6)
53 #define spi8 ((spi_t)7)
54 #define spi9 ((spi_t)8)
55
56
57 typedef enum
58 {
59 spi4bits = 0x3,
60 spi5bits = 0x4,
61 spi6bits = 0x5,
62 spi7bits = 0x6,
63 spi8bits = 0x7,
64 spi9bits = 0x8,
65 spi10bits = 0x9,
66 spi11bits = 0xA,
67 spi12bits = 0xB,
68 spi13bits = 0xC,
69 spi14bits = 0xD,
70 spi15bits = 0xE,
71 spi16bits = 0xF
72 }spibits_t;
73
74 #define SPIBITSMASK 0xF
75
76 typedef enum
77 {
78 spislave = 0x00,
79 spimaster = 0x10
80 }spimode_t;
81
82 #define SPIMODEMASK 0x10
83
84 typedef enum
85 {
86 spiclkinhlow = 0x00,
87 spiclkinhhigh = 0x20
88 }spiclkinhlvl_t;
89
90 #define SPICLKINHLVLMASK 0x20
91
92
93 typedef enum
94 {
95 spiclkfirstedge = 0x00,
96 spiclksecondedge = 0x40
97 }spiclkphase_t;
98
99 #define SPICLKPHASEMASK 0x40
100
101 typedef enum
102 {
103 spimsbfirst = 0x00,
104 spilsbfirst = 0x80
105 }spibitorder_t;
106
107 #define SPIBITORDERMASK 0x80
108
109
110 extern spi_t spiopen(int count);
111 extern spi_t spiopenandconfig(int count,uint32_t cfg,uint32_t speed,uint32_t MOSIpin,uint32_t MISOpin,uint32_t SCKpin,uint32_t SCSpin);
112 extern int spiclose(spi_t spidev);
113 extern int spisetpins(spi_t spidev,uint32_t MOSIpin,uint32_t MISOpin,uint32_t SCKpin,uint32_t SCSpin);
114 extern int spienable(spi_t spidev);
115 extern int spidisable(spi_t spidev);
116 extern int spitransactionfinished(spi_t spidev);
117 extern int spisetconfig(spi_t spidev,uint32_t config,uint32_t speed);
118 extern int spisetspeed(spi_t spidev, uint32_t speed);
119 extern uint32_t spigetspeed(spi_t spidev);
120 extern int spisetbitorder(spi_t spidev,spibitorder_t order);
121 extern int spisetdatabits(spi_t spidev,spibits_t bitscnt);
122 extern int spisetclkinhlevel(spi_t spidev,spiclkinhlvl_t level);
123 extern int spisetclkphase(spi_t spidev,spiclkphase_t phase);
124 extern int spiputw(spi_t spidev,uint16_t data);
125 extern uint16_t spigetw(spi_t spidev);
126 extern uint16_t spigetw2(spi_t spidev,uint16_t data);
127 extern int spiputs(spi_t spidev,char* s);
128 extern int spigets(spi_t spidev,char* s);
129 extern int spiputnw(spi_t spidev,uint16_t* w,int n);
130 extern int spigetnw(spi_t spidev,uint16_t* w,int n);
131 extern int spiputnc(spi_t spidev,char* c,int n);
132 extern int spigetnc(spi_t spidev,char* c,int n);
133 extern int spiavailiabledata(spi_t spidev);
134
135 #ifdef __cplusplus
136 }
137 #endif
138 #endif //SPI_H
139
140
141
142
143
144
145
146
147
148
149
150
@@ -0,0 +1,319
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 /*! \file uart.h
23 \brief UART api.
24
25 The uart api gives you a standard way to drive any uart on any processor.
26 With this api you will be able to open and configure your UART define the
27 associated pins when applicable and read/write on it. Note that depending
28 on the target architecture you can have soft or hard UART.
29
30 A simple example to read or writes on uart1.
31 \code
32 // lets open uart1
33 //config :
34 // -parity = No
35 // -data bits = 8
36 // -stop bits = 1
37 // -speed = 115200 bauds
38 // -TX = PA9
39 // -RX = PA10
40 // -CTS = unused (-1)
41 // -RTS = unused (-1)
42 uart_t uart = uartopenandconfig(uart1,uartparitynone | uart8bits | uartonestop,115200,PA9,PA10,-1,-1);
43 //check that everything is ok
44 if(uart==uart1)
45 {
46 //to write 0xFF on uart1
47 uartputc(uart,0xFF);
48 //you can also send a string on uart1
49 char* buffer="hello";
50 uartputs(uart,buffer);
51 //to read a char
52 char result = uartgetc(uart);
53 }
54
55 \endcode
56
57 */
58
59 #ifndef UART_H
60 #define UART_H
61 #include <streamdevices.h>
62
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66
67 /*
68 typedef volatile struct uart_t
69 {
70 volatile void* _dev;
71 volatile int cfg;
72 volatile int speed;
73 }uart_t;
74 */
75
76 /**
77 * @brief uart handle
78 *
79 * uart_t is the handle type you will use for all uart related functions.
80 */
81 typedef int uart_t;
82
83 #define uart1 0 ///< uart1
84 #define uart2 1 ///< uart2
85 #define uart3 2 ///< uart3
86 #define uart4 3 ///< uart4
87 #define uart5 4 ///< uart5
88 #define uart6 5 ///< uart6
89 #define uart7 6 ///< uart7
90 #define uart8 7 ///< uart8
91 #define uart9 8 ///< uart9
92
93 #ifndef DOXYGEN_SHOULD_SKIP_THIS
94 #define UARTPARITYMASK 0x3
95 #define UARTBITSMASK 0xC
96 #define UARTSTOPBITSMASK 0x70
97 #endif
98
99 /**
100 * @brief Uart parity enum
101 *
102 * Use uartparity_t values to configure the parity of your UART port with
103 * uartsetparity function or uartsetconfig. Don't try to use numerical values
104 * directly!
105 */
106 typedef enum uartparity_t
107 {
108 uartparitynone = 0x1, /**< No parity */
109 uartparityeven = 0x2, /**< Even parity */
110 uartparityodd = 0x3 /**< Odd parity */
111 }uartparity_t;
112
113 /**
114 * @brief Uart data bits enum
115 *
116 * Use uartbits_t values to configure the number of data bits of your UART port with
117 * uartsetdatabits function or uartsetconfig. Don't try to use numerical values
118 * directly!
119 */
120 typedef enum uartbits_t
121 {
122 uart7bits = 0x4, /**< 7 data bits communication */
123 uart8bits = 0x8, /**< 8 data bits communication */
124 uart9bits = 0xC /**< 9 data bits communication */
125 }uartbits_t;
126
127 /**
128 * @brief Uart stop bits enum
129 *
130 * Use uartstopbits_t values to configure the number of stop bits of your UART port with
131 * uartsetstopbits function or uartsetconfig. Don't try to use numerical values
132 * directly!
133 */
134 typedef enum uartstopbits_t
135 {
136 uarthalfstop = 0x10, /**< 0.5 stop bits communication */
137 uartonestop = 0x20, /**< 1 stop bits communication */
138 uartonehalfstop = 0x30, /**< 1.5 stop bits communication */
139 uarttwostop = 0x40 /**< 2 stop bits communication */
140 }uartstopbits_t;
141
142
143
144 /**
145 * @brief Uart open function
146 *
147 * This function opens the given uart, it should turn it ON iff needed and enable it.
148 * @param count The uart identifier uart1 for example
149 * @return The uart identifier on success or -1 if it fails.
150 */
151 extern uart_t uartopen(int count);
152 /**
153 * @brief Uart open and configure function
154 *
155 * This function call uartopen and configure the UART with the given parameters.
156 * @param count The uart identifier uart1 for example
157 * @param cfg The configuration of the UART, build from an or mask.
158 * @param speed The target speed of the UART in bauds, the real speed depend on the implementation
159 * and the target.
160 * @param TXpin The TXpin look gpio api.
161 * @param RXpin The RXpin look gpio api.
162 * @param RTSpin The RTSpin look gpio api.
163 * @param CTSpin The CTSpin look gpio api.
164 * @return The uart identifier on success or -1 if it fails.
165 * @sa uartclose(uart_t uart), uartopenandconfig(int count ,uint32_t cfg,uint32_t speed,uint32_t TXpin,uint32_t RXpin,uint32_t RTSpin,uint32_t CTSpin), uartsetconfig(uart_t uart,uint32_t cfg,uint32_t speed)
166 */
167 extern uart_t uartopenandconfig(int count ,uint32_t cfg,uint32_t speed,uint32_t TXpin,uint32_t RXpin,uint32_t RTSpin,uint32_t CTSpin);
168 /**
169 * @brief Uart close function
170 *
171 * This function should at least reset the UART configuration.
172 * @param uart The uart identifier uart1 for example.
173 * @return 1 on success or -1 on error.
174 */
175 extern int uartclose(uart_t uart);
176 /**
177 * @brief uart set pins function
178 *
179 * This function sets the Uart pins, you have to check for each target that the pins you selected
180 * are compatible with the desired function.
181 * @param uart The uart identifier uart1 for example.
182 * @param TXpin The TXpin look gpio api.
183 * @param RXpin The RXpin look gpio api.
184 * @param RTSpin The RTSpin look gpio api.
185 * @param CTSpin The CTSpin look gpio api.
186 * @return 1 on success or -1 on error.
187 * @sa uartopen(int count)
188 */
189 extern int uartsetpins(uart_t uart,uint32_t TXpin,uint32_t RXpin,uint32_t RTSpin,uint32_t CTSpin);
190 /**
191 * @brief Enable uart functionnable
192 *
193 *This function enables given uart, it makes sens on target where you can enable or disable
194 *the uart.
195 * @param uart The uart identifier uart1 for example.
196 * @return 1 on success or -1 on error.
197 * @sa uartenable(uart_t uart)
198 */
199 extern int uartenable(uart_t uart);
200 /**
201 * @brief Disable uart function
202 *
203 *This function disables given uart, it makes sens on target where you can enable or disable
204 *the uart.
205 * @param uart The uart identifier uart1 for example.
206 * @return 1 on success or -1 on error.
207 */
208 extern int uartdisable(uart_t uart);
209 /**
210 * @brief uart set configuration function
211 *
212 * This function configure the given uart.
213 * @param uart The uart identifier uart1 for example.
214 * @param cfg
215 * @param speed
216 * @return
217 */
218 extern int uartsetconfig(uart_t uart,uint32_t cfg,uint32_t speed);
219 /**
220 * @brief uartsetspeed
221 * @param uart The uart identifier uart1 for example.
222 * @param speed
223 * @return
224 */
225 extern int uartsetspeed(uart_t uart,uint32_t speed);
226 /**
227 * @brief uartsetparity
228 * @param uart The uart identifier uart1 for example.
229 * @param parity
230 * @return
231 */
232 extern int uartsetparity(uart_t uart,uartparity_t parity);
233 /**
234 * @brief uartsetdatabits
235 * @param uart The uart identifier uart1 for example.
236 * @param databits
237 * @return
238 */
239 extern int uartsetdatabits(uart_t uart,uartbits_t databits);
240 /**
241 * @brief uartsetstopbits
242 * @param uart The uart identifier uart1 for example.
243 * @param stopbits
244 * @return
245 */
246 extern int uartsetstopbits(uart_t uart,uartstopbits_t stopbits);
247 /**
248 * @brief uartputc
249 * @param uart The uart identifier uart1 for example.
250 * @param c
251 * @return
252 */
253 extern int uartputc(uart_t uart,char c);
254 /**
255 * @brief uartgetc
256 * @param uart The uart identifier uart1 for example.
257 * @return
258 */
259 extern char uartgetc(uart_t uart);
260 /**
261 * @brief uartputs
262 * @param uart The uart identifier uart1 for example.
263 * @param s
264 * @return
265 */
266 extern int uartputs(uart_t uart,char* s);
267 /**
268 * @brief uartgets
269 * @param uart The uart identifier uart1 for example.
270 * @param s
271 * @return
272 */
273 extern int uartgets(uart_t uart,char* s);
274 /**
275 * @brief uartputnc
276 * @param uart The uart identifier uart1 for example.
277 * @param c
278 * @param n
279 * @return
280 */
281 extern int uartputnc(uart_t uart,char* c,int n);
282 /**
283 * @brief uartgetnc
284 * @param uart The uart identifier uart1 for example.
285 * @param c
286 * @param n
287 * @return
288 */
289 extern int uartgetnc(uart_t uart,char* c,int n);
290 /**
291 * @brief uartavailiabledata
292 * @param uart The uart identifier uart1 for example.
293 * @return
294 */
295 extern int uartavailiabledata(uart_t uart);
296 /**
297 * @brief uartmkstreamdev
298 * @param uart The uart identifier uart1 for example.
299 * @param strdev
300 * @return
301 */
302 extern int uartmkstreamdev(uart_t uart,streamdevice* strdev);
303
304 #ifdef __cplusplus
305 }
306 #endif
307 #endif //SPI_H
308
309
310
311
312
313
314
315
316
317
318
319
@@ -0,0 +1,104
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2011, Alexis Jeandet
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
22 #ifndef INA226_H
23 #define INA226_H
24
25 #include <i2c.h>
26 //#include <uhandle.h>
27
28 typedef struct INA226_t
29 {
30 i2c_t i2cdev;
31 uint8_t devAddress;
32 uint32_t shuntmOhm;
33 uint32_t CurrentRangeuAmp;
34 }INA226_t;
35
36 extern int ina226open(INA226_t* dev,i2c_t i2cdev,uint16_t config,uint8_t A0,uint8_t A1,uint32_t shuntmOhm, uint32_t CurrentRangeuAmp);
37 extern uint16_t ina226getID(INA226_t* dev);
38 extern int ina226calibrate(INA226_t* dev,uint32_t shuntmOhm, uint32_t CurrentRangeuAmp);
39 extern uint32_t ina226getBusVoltage(INA226_t* dev);
40 extern uint32_t ina226getPower(INA226_t* dev);
41 extern int32_t ina226getCurrent(INA226_t* dev);
42 extern uint16_t ina226getReg(INA226_t* dev,char reg);
43 extern int ina226setReg(INA226_t* dev,char reg,int16_t value);
44
45
46 #define INA226_I2C_ADDRESS 0x40
47
48
49 #define INA226_Die_ID_Reg 0xFF
50 #define INA226_Configuration_Reg 0
51 #define INA226_Shunt_Voltage_Reg 1
52 #define INA226_Bus_Voltage_Reg 2
53 #define INA226_Power_Reg 3
54 #define INA226_Current_Reg 4
55 #define INA226_Calibration_Reg 5
56 #define INA226_Mask_Enable_Reg 6
57 #define INA226_Alert_Limit_Reg 7
58
59 #define INA226_AVERAGES_1 0
60 #define INA226_AVERAGES_4 (1<<9)
61 #define INA226_AVERAGES_16 (2<<9)
62 #define INA226_AVERAGES_64 (3<<9)
63 #define INA226_AVERAGES_128 (4<<9)
64 #define INA226_AVERAGES_256 (5<<9)
65 #define INA226_AVERAGES_512 (6<<9)
66 #define INA226_AVERAGES_1024 (7<<9)
67
68 #define INA226_BUS_CONV_140us 0
69 #define INA226_BUS_CONV_204us (1<<6)
70 #define INA226_BUS_CONV_332us (2<<6)
71 #define INA226_BUS_CONV_588us (3<<6)
72 #define INA226_BUS_CONV_1100us (4<<6)
73 #define INA226_BUS_CONV_2116us (5<<6)
74 #define INA226_BUS_CONV_4156us (6<<6)
75 #define INA226_BUS_CONV_8244us (7<<6)
76
77 #define INA226_SHUNT_CONV_140us 0
78 #define INA226_SHUNT_CONV_204us (1<<3)
79 #define INA226_SHUNT_CONV_332us (2<<3)
80 #define INA226_SHUNT_CONV_588us (3<<3)
81 #define INA226_SHUNT_CONV_1100us (4<<3)
82 #define INA226_SHUNT_CONV_2116us (5<<3)
83 #define INA226_SHUNT_CONV_4156us (6<<3)
84 #define INA226_SHUNT_CONV_8244us (7<<3)
85
86 #define INA226_MODE_POWER_DOWN 0
87 #define INA226_MODE_SHUNT_VOLTAGE_TRIGGERRED 1
88 #define INA226_MODE_BUS_VOLTAGE_TRIGGERRED 2
89 #define INA226_MODE_SHUNT_AND_BUS_TRIGGERRED 3
90 #define INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS 5
91 #define INA226_MODE_BUS_VOLTAGE_CONTINUOUS 6
92 #define INA226_MODE_SHUNT_AND_BUS_CONTINUOUS 7
93
94
95
96
97 #endif
98
99
100
101
102
103
104
@@ -1,1902 +1,1902
1 # Doxyfile 1.8.3.1
1 # Doxyfile 1.8.3.1
2
2
3 # This file describes the settings to be used by the documentation system
3 # This file describes the settings to be used by the documentation system
4 # doxygen (www.doxygen.org) for a project
4 # doxygen (www.doxygen.org) for a project
5 #
5 #
6 # All text after a hash (#) is considered a comment and will be ignored
6 # All text after a hash (#) is considered a comment and will be ignored
7 # The format is:
7 # The format is:
8 # TAG = value [value, ...]
8 # TAG = value [value, ...]
9 # For lists items can also be appended using:
9 # For lists items can also be appended using:
10 # TAG += value [value, ...]
10 # TAG += value [value, ...]
11 # Values that contain spaces should be placed between quotes (" ")
11 # Values that contain spaces should be placed between quotes (" ")
12
12
13 #---------------------------------------------------------------------------
13 #---------------------------------------------------------------------------
14 # Project related configuration options
14 # Project related configuration options
15 #---------------------------------------------------------------------------
15 #---------------------------------------------------------------------------
16
16
17 # This tag specifies the encoding used for all characters in the config file
17 # This tag specifies the encoding used for all characters in the config file
18 # that follow. The default is UTF-8 which is also the encoding used for all
18 # that follow. The default is UTF-8 which is also the encoding used for all
19 # text before the first occurrence of this tag. Doxygen uses libiconv (or the
19 # text before the first occurrence of this tag. Doxygen uses libiconv (or the
20 # iconv built into libc) for the transcoding. See
20 # iconv built into libc) for the transcoding. See
21 # http://www.gnu.org/software/libiconv for the list of possible encodings.
21 # http://www.gnu.org/software/libiconv for the list of possible encodings.
22
22
23 DOXYFILE_ENCODING = UTF-8
23 DOXYFILE_ENCODING = UTF-8
24
24
25 # The PROJECT_NAME tag is a single word (or sequence of words) that should
25 # The PROJECT_NAME tag is a single word (or sequence of words) that should
26 # identify the project. Note that if you do not use Doxywizard you need
26 # identify the project. Note that if you do not use Doxywizard you need
27 # to put quotes around the project name if it contains spaces.
27 # to put quotes around the project name if it contains spaces.
28
28
29 PROJECT_NAME = libuc2
29 PROJECT_NAME = libuc2
30
30
31 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
31 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
32 # This could be handy for archiving the generated documentation or
32 # This could be handy for archiving the generated documentation or
33 # if some version control system is used.
33 # if some version control system is used.
34
34
35 PROJECT_NUMBER =
35 PROJECT_NUMBER =
36
36
37 # Using the PROJECT_BRIEF tag one can provide an optional one line description
37 # Using the PROJECT_BRIEF tag one can provide an optional one line description
38 # for a project that appears at the top of each page and should give viewer
38 # for a project that appears at the top of each page and should give viewer
39 # a quick idea about the purpose of the project. Keep the description short.
39 # a quick idea about the purpose of the project. Keep the description short.
40
40
41 PROJECT_BRIEF =
41 PROJECT_BRIEF =
42
42
43 # With the PROJECT_LOGO tag one can specify an logo or icon that is
43 # With the PROJECT_LOGO tag one can specify an logo or icon that is
44 # included in the documentation. The maximum height of the logo should not
44 # included in the documentation. The maximum height of the logo should not
45 # exceed 55 pixels and the maximum width should not exceed 200 pixels.
45 # exceed 55 pixels and the maximum width should not exceed 200 pixels.
46 # Doxygen will copy the logo to the output directory.
46 # Doxygen will copy the logo to the output directory.
47
47
48 PROJECT_LOGO =
48 PROJECT_LOGO =
49
49
50 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
50 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
51 # base path where the generated documentation will be put.
51 # base path where the generated documentation will be put.
52 # If a relative path is entered, it will be relative to the location
52 # If a relative path is entered, it will be relative to the location
53 # where doxygen was started. If left blank the current directory will be used.
53 # where doxygen was started. If left blank the current directory will be used.
54
54
55 OUTPUT_DIRECTORY = /opt/libuc2/Doc/doxygen
55 OUTPUT_DIRECTORY = doc/doxygen
56
56
57 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
57 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
58 # 4096 sub-directories (in 2 levels) under the output directory of each output
58 # 4096 sub-directories (in 2 levels) under the output directory of each output
59 # format and will distribute the generated files over these directories.
59 # format and will distribute the generated files over these directories.
60 # Enabling this option can be useful when feeding doxygen a huge amount of
60 # Enabling this option can be useful when feeding doxygen a huge amount of
61 # source files, where putting all generated files in the same directory would
61 # source files, where putting all generated files in the same directory would
62 # otherwise cause performance problems for the file system.
62 # otherwise cause performance problems for the file system.
63
63
64 CREATE_SUBDIRS = NO
64 CREATE_SUBDIRS = NO
65
65
66 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
66 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
67 # documentation generated by doxygen is written. Doxygen will use this
67 # documentation generated by doxygen is written. Doxygen will use this
68 # information to generate all constant output in the proper language.
68 # information to generate all constant output in the proper language.
69 # The default language is English, other supported languages are:
69 # The default language is English, other supported languages are:
70 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
70 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
71 # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
71 # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
72 # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
72 # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
73 # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
73 # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
74 # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
74 # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
75 # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
75 # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
76
76
77 OUTPUT_LANGUAGE = English
77 OUTPUT_LANGUAGE = English
78
78
79 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
79 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
80 # include brief member descriptions after the members that are listed in
80 # include brief member descriptions after the members that are listed in
81 # the file and class documentation (similar to JavaDoc).
81 # the file and class documentation (similar to JavaDoc).
82 # Set to NO to disable this.
82 # Set to NO to disable this.
83
83
84 BRIEF_MEMBER_DESC = YES
84 BRIEF_MEMBER_DESC = YES
85
85
86 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
86 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
87 # the brief description of a member or function before the detailed description.
87 # the brief description of a member or function before the detailed description.
88 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
88 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
89 # brief descriptions will be completely suppressed.
89 # brief descriptions will be completely suppressed.
90
90
91 REPEAT_BRIEF = YES
91 REPEAT_BRIEF = YES
92
92
93 # This tag implements a quasi-intelligent brief description abbreviator
93 # This tag implements a quasi-intelligent brief description abbreviator
94 # that is used to form the text in various listings. Each string
94 # that is used to form the text in various listings. Each string
95 # in this list, if found as the leading text of the brief description, will be
95 # in this list, if found as the leading text of the brief description, will be
96 # stripped from the text and the result after processing the whole list, is
96 # stripped from the text and the result after processing the whole list, is
97 # used as the annotated text. Otherwise, the brief description is used as-is.
97 # used as the annotated text. Otherwise, the brief description is used as-is.
98 # If left blank, the following values are used ("$name" is automatically
98 # If left blank, the following values are used ("$name" is automatically
99 # replaced with the name of the entity): "The $name class" "The $name widget"
99 # replaced with the name of the entity): "The $name class" "The $name widget"
100 # "The $name file" "is" "provides" "specifies" "contains"
100 # "The $name file" "is" "provides" "specifies" "contains"
101 # "represents" "a" "an" "the"
101 # "represents" "a" "an" "the"
102
102
103 ABBREVIATE_BRIEF = "The $name class" \
103 ABBREVIATE_BRIEF = "The $name class" \
104 "The $name widget" \
104 "The $name widget" \
105 "The $name file" \
105 "The $name file" \
106 is \
106 is \
107 provides \
107 provides \
108 specifies \
108 specifies \
109 contains \
109 contains \
110 represents \
110 represents \
111 a \
111 a \
112 an \
112 an \
113 the
113 the
114
114
115 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
115 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
116 # Doxygen will generate a detailed section even if there is only a brief
116 # Doxygen will generate a detailed section even if there is only a brief
117 # description.
117 # description.
118
118
119 ALWAYS_DETAILED_SEC = NO
119 ALWAYS_DETAILED_SEC = NO
120
120
121 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
121 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
122 # inherited members of a class in the documentation of that class as if those
122 # inherited members of a class in the documentation of that class as if those
123 # members were ordinary class members. Constructors, destructors and assignment
123 # members were ordinary class members. Constructors, destructors and assignment
124 # operators of the base classes will not be shown.
124 # operators of the base classes will not be shown.
125
125
126 INLINE_INHERITED_MEMB = NO
126 INLINE_INHERITED_MEMB = NO
127
127
128 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
128 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
129 # path before files name in the file list and in the header files. If set
129 # path before files name in the file list and in the header files. If set
130 # to NO the shortest path that makes the file name unique will be used.
130 # to NO the shortest path that makes the file name unique will be used.
131
131
132 FULL_PATH_NAMES = YES
132 FULL_PATH_NAMES = YES
133
133
134 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
134 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
135 # can be used to strip a user-defined part of the path. Stripping is
135 # can be used to strip a user-defined part of the path. Stripping is
136 # only done if one of the specified strings matches the left-hand part of
136 # only done if one of the specified strings matches the left-hand part of
137 # the path. The tag can be used to show relative paths in the file list.
137 # the path. The tag can be used to show relative paths in the file list.
138 # If left blank the directory from which doxygen is run is used as the
138 # If left blank the directory from which doxygen is run is used as the
139 # path to strip. Note that you specify absolute paths here, but also
139 # path to strip. Note that you specify absolute paths here, but also
140 # relative paths, which will be relative from the directory where doxygen is
140 # relative paths, which will be relative from the directory where doxygen is
141 # started.
141 # started.
142
142
143 STRIP_FROM_PATH =
143 STRIP_FROM_PATH =
144
144
145 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
145 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
146 # the path mentioned in the documentation of a class, which tells
146 # the path mentioned in the documentation of a class, which tells
147 # the reader which header file to include in order to use a class.
147 # the reader which header file to include in order to use a class.
148 # If left blank only the name of the header file containing the class
148 # If left blank only the name of the header file containing the class
149 # definition is used. Otherwise one should specify the include paths that
149 # definition is used. Otherwise one should specify the include paths that
150 # are normally passed to the compiler using the -I flag.
150 # are normally passed to the compiler using the -I flag.
151
151
152 STRIP_FROM_INC_PATH =
152 STRIP_FROM_INC_PATH =
153
153
154 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
154 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
155 # (but less readable) file names. This can be useful if your file system
155 # (but less readable) file names. This can be useful if your file system
156 # doesn't support long names like on DOS, Mac, or CD-ROM.
156 # doesn't support long names like on DOS, Mac, or CD-ROM.
157
157
158 SHORT_NAMES = NO
158 SHORT_NAMES = NO
159
159
160 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
160 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
161 # will interpret the first line (until the first dot) of a JavaDoc-style
161 # will interpret the first line (until the first dot) of a JavaDoc-style
162 # comment as the brief description. If set to NO, the JavaDoc
162 # comment as the brief description. If set to NO, the JavaDoc
163 # comments will behave just like regular Qt-style comments
163 # comments will behave just like regular Qt-style comments
164 # (thus requiring an explicit @brief command for a brief description.)
164 # (thus requiring an explicit @brief command for a brief description.)
165
165
166 JAVADOC_AUTOBRIEF = NO
166 JAVADOC_AUTOBRIEF = NO
167
167
168 # If the QT_AUTOBRIEF tag is set to YES then Doxygen will
168 # If the QT_AUTOBRIEF tag is set to YES then Doxygen will
169 # interpret the first line (until the first dot) of a Qt-style
169 # interpret the first line (until the first dot) of a Qt-style
170 # comment as the brief description. If set to NO, the comments
170 # comment as the brief description. If set to NO, the comments
171 # will behave just like regular Qt-style comments (thus requiring
171 # will behave just like regular Qt-style comments (thus requiring
172 # an explicit \brief command for a brief description.)
172 # an explicit \brief command for a brief description.)
173
173
174 QT_AUTOBRIEF = NO
174 QT_AUTOBRIEF = NO
175
175
176 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
176 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
177 # treat a multi-line C++ special comment block (i.e. a block of //! or ///
177 # treat a multi-line C++ special comment block (i.e. a block of //! or ///
178 # comments) as a brief description. This used to be the default behaviour.
178 # comments) as a brief description. This used to be the default behaviour.
179 # The new default is to treat a multi-line C++ comment block as a detailed
179 # The new default is to treat a multi-line C++ comment block as a detailed
180 # description. Set this tag to YES if you prefer the old behaviour instead.
180 # description. Set this tag to YES if you prefer the old behaviour instead.
181
181
182 MULTILINE_CPP_IS_BRIEF = NO
182 MULTILINE_CPP_IS_BRIEF = NO
183
183
184 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
184 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
185 # member inherits the documentation from any documented member that it
185 # member inherits the documentation from any documented member that it
186 # re-implements.
186 # re-implements.
187
187
188 INHERIT_DOCS = YES
188 INHERIT_DOCS = YES
189
189
190 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
190 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
191 # a new page for each member. If set to NO, the documentation of a member will
191 # a new page for each member. If set to NO, the documentation of a member will
192 # be part of the file/class/namespace that contains it.
192 # be part of the file/class/namespace that contains it.
193
193
194 SEPARATE_MEMBER_PAGES = NO
194 SEPARATE_MEMBER_PAGES = NO
195
195
196 # The TAB_SIZE tag can be used to set the number of spaces in a tab.
196 # The TAB_SIZE tag can be used to set the number of spaces in a tab.
197 # Doxygen uses this value to replace tabs by spaces in code fragments.
197 # Doxygen uses this value to replace tabs by spaces in code fragments.
198
198
199 TAB_SIZE = 4
199 TAB_SIZE = 4
200
200
201 # This tag can be used to specify a number of aliases that acts
201 # This tag can be used to specify a number of aliases that acts
202 # as commands in the documentation. An alias has the form "name=value".
202 # as commands in the documentation. An alias has the form "name=value".
203 # For example adding "sideeffect=\par Side Effects:\n" will allow you to
203 # For example adding "sideeffect=\par Side Effects:\n" will allow you to
204 # put the command \sideeffect (or @sideeffect) in the documentation, which
204 # put the command \sideeffect (or @sideeffect) in the documentation, which
205 # will result in a user-defined paragraph with heading "Side Effects:".
205 # will result in a user-defined paragraph with heading "Side Effects:".
206 # You can put \n's in the value part of an alias to insert newlines.
206 # You can put \n's in the value part of an alias to insert newlines.
207
207
208 ALIASES =
208 ALIASES =
209
209
210 # This tag can be used to specify a number of word-keyword mappings (TCL only).
210 # This tag can be used to specify a number of word-keyword mappings (TCL only).
211 # A mapping has the form "name=value". For example adding
211 # A mapping has the form "name=value". For example adding
212 # "class=itcl::class" will allow you to use the command class in the
212 # "class=itcl::class" will allow you to use the command class in the
213 # itcl::class meaning.
213 # itcl::class meaning.
214
214
215 TCL_SUBST =
215 TCL_SUBST =
216
216
217 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
217 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
218 # sources only. Doxygen will then generate output that is more tailored for C.
218 # sources only. Doxygen will then generate output that is more tailored for C.
219 # For instance, some of the names that are used will be different. The list
219 # For instance, some of the names that are used will be different. The list
220 # of all members will be omitted, etc.
220 # of all members will be omitted, etc.
221
221
222 OPTIMIZE_OUTPUT_FOR_C = YES
222 OPTIMIZE_OUTPUT_FOR_C = YES
223
223
224 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
224 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
225 # sources only. Doxygen will then generate output that is more tailored for
225 # sources only. Doxygen will then generate output that is more tailored for
226 # Java. For instance, namespaces will be presented as packages, qualified
226 # Java. For instance, namespaces will be presented as packages, qualified
227 # scopes will look different, etc.
227 # scopes will look different, etc.
228
228
229 OPTIMIZE_OUTPUT_JAVA = NO
229 OPTIMIZE_OUTPUT_JAVA = NO
230
230
231 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
231 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
232 # sources only. Doxygen will then generate output that is more tailored for
232 # sources only. Doxygen will then generate output that is more tailored for
233 # Fortran.
233 # Fortran.
234
234
235 OPTIMIZE_FOR_FORTRAN = NO
235 OPTIMIZE_FOR_FORTRAN = NO
236
236
237 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
237 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
238 # sources. Doxygen will then generate output that is tailored for
238 # sources. Doxygen will then generate output that is tailored for
239 # VHDL.
239 # VHDL.
240
240
241 OPTIMIZE_OUTPUT_VHDL = NO
241 OPTIMIZE_OUTPUT_VHDL = NO
242
242
243 # Doxygen selects the parser to use depending on the extension of the files it
243 # Doxygen selects the parser to use depending on the extension of the files it
244 # parses. With this tag you can assign which parser to use for a given
244 # parses. With this tag you can assign which parser to use for a given
245 # extension. Doxygen has a built-in mapping, but you can override or extend it
245 # extension. Doxygen has a built-in mapping, but you can override or extend it
246 # using this tag. The format is ext=language, where ext is a file extension,
246 # using this tag. The format is ext=language, where ext is a file extension,
247 # and language is one of the parsers supported by doxygen: IDL, Java,
247 # and language is one of the parsers supported by doxygen: IDL, Java,
248 # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
248 # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
249 # C++. For instance to make doxygen treat .inc files as Fortran files (default
249 # C++. For instance to make doxygen treat .inc files as Fortran files (default
250 # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
250 # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
251 # that for custom extensions you also need to set FILE_PATTERNS otherwise the
251 # that for custom extensions you also need to set FILE_PATTERNS otherwise the
252 # files are not read by doxygen.
252 # files are not read by doxygen.
253
253
254 EXTENSION_MAPPING =
254 EXTENSION_MAPPING =
255
255
256 # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
256 # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
257 # comments according to the Markdown format, which allows for more readable
257 # comments according to the Markdown format, which allows for more readable
258 # documentation. See http://daringfireball.net/projects/markdown/ for details.
258 # documentation. See http://daringfireball.net/projects/markdown/ for details.
259 # The output of markdown processing is further processed by doxygen, so you
259 # The output of markdown processing is further processed by doxygen, so you
260 # can mix doxygen, HTML, and XML commands with Markdown formatting.
260 # can mix doxygen, HTML, and XML commands with Markdown formatting.
261 # Disable only in case of backward compatibilities issues.
261 # Disable only in case of backward compatibilities issues.
262
262
263 MARKDOWN_SUPPORT = YES
263 MARKDOWN_SUPPORT = YES
264
264
265 # When enabled doxygen tries to link words that correspond to documented classes,
265 # When enabled doxygen tries to link words that correspond to documented classes,
266 # or namespaces to their corresponding documentation. Such a link can be
266 # or namespaces to their corresponding documentation. Such a link can be
267 # prevented in individual cases by by putting a % sign in front of the word or
267 # prevented in individual cases by by putting a % sign in front of the word or
268 # globally by setting AUTOLINK_SUPPORT to NO.
268 # globally by setting AUTOLINK_SUPPORT to NO.
269
269
270 AUTOLINK_SUPPORT = YES
270 AUTOLINK_SUPPORT = YES
271
271
272 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
272 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
273 # to include (a tag file for) the STL sources as input, then you should
273 # to include (a tag file for) the STL sources as input, then you should
274 # set this tag to YES in order to let doxygen match functions declarations and
274 # set this tag to YES in order to let doxygen match functions declarations and
275 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
275 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
276 # func(std::string) {}). This also makes the inheritance and collaboration
276 # func(std::string) {}). This also makes the inheritance and collaboration
277 # diagrams that involve STL classes more complete and accurate.
277 # diagrams that involve STL classes more complete and accurate.
278
278
279 BUILTIN_STL_SUPPORT = NO
279 BUILTIN_STL_SUPPORT = NO
280
280
281 # If you use Microsoft's C++/CLI language, you should set this option to YES to
281 # If you use Microsoft's C++/CLI language, you should set this option to YES to
282 # enable parsing support.
282 # enable parsing support.
283
283
284 CPP_CLI_SUPPORT = NO
284 CPP_CLI_SUPPORT = NO
285
285
286 # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
286 # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
287 # Doxygen will parse them like normal C++ but will assume all classes use public
287 # Doxygen will parse them like normal C++ but will assume all classes use public
288 # instead of private inheritance when no explicit protection keyword is present.
288 # instead of private inheritance when no explicit protection keyword is present.
289
289
290 SIP_SUPPORT = NO
290 SIP_SUPPORT = NO
291
291
292 # For Microsoft's IDL there are propget and propput attributes to indicate
292 # For Microsoft's IDL there are propget and propput attributes to indicate
293 # getter and setter methods for a property. Setting this option to YES (the
293 # getter and setter methods for a property. Setting this option to YES (the
294 # default) will make doxygen replace the get and set methods by a property in
294 # default) will make doxygen replace the get and set methods by a property in
295 # the documentation. This will only work if the methods are indeed getting or
295 # the documentation. This will only work if the methods are indeed getting or
296 # setting a simple type. If this is not the case, or you want to show the
296 # setting a simple type. If this is not the case, or you want to show the
297 # methods anyway, you should set this option to NO.
297 # methods anyway, you should set this option to NO.
298
298
299 IDL_PROPERTY_SUPPORT = YES
299 IDL_PROPERTY_SUPPORT = YES
300
300
301 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
301 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
302 # tag is set to YES, then doxygen will reuse the documentation of the first
302 # tag is set to YES, then doxygen will reuse the documentation of the first
303 # member in the group (if any) for the other members of the group. By default
303 # member in the group (if any) for the other members of the group. By default
304 # all members of a group must be documented explicitly.
304 # all members of a group must be documented explicitly.
305
305
306 DISTRIBUTE_GROUP_DOC = NO
306 DISTRIBUTE_GROUP_DOC = NO
307
307
308 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of
308 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of
309 # the same type (for instance a group of public functions) to be put as a
309 # the same type (for instance a group of public functions) to be put as a
310 # subgroup of that type (e.g. under the Public Functions section). Set it to
310 # subgroup of that type (e.g. under the Public Functions section). Set it to
311 # NO to prevent subgrouping. Alternatively, this can be done per class using
311 # NO to prevent subgrouping. Alternatively, this can be done per class using
312 # the \nosubgrouping command.
312 # the \nosubgrouping command.
313
313
314 SUBGROUPING = YES
314 SUBGROUPING = YES
315
315
316 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
316 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
317 # unions are shown inside the group in which they are included (e.g. using
317 # unions are shown inside the group in which they are included (e.g. using
318 # @ingroup) instead of on a separate page (for HTML and Man pages) or
318 # @ingroup) instead of on a separate page (for HTML and Man pages) or
319 # section (for LaTeX and RTF).
319 # section (for LaTeX and RTF).
320
320
321 INLINE_GROUPED_CLASSES = NO
321 INLINE_GROUPED_CLASSES = NO
322
322
323 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
323 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
324 # unions with only public data fields will be shown inline in the documentation
324 # unions with only public data fields will be shown inline in the documentation
325 # of the scope in which they are defined (i.e. file, namespace, or group
325 # of the scope in which they are defined (i.e. file, namespace, or group
326 # documentation), provided this scope is documented. If set to NO (the default),
326 # documentation), provided this scope is documented. If set to NO (the default),
327 # structs, classes, and unions are shown on a separate page (for HTML and Man
327 # structs, classes, and unions are shown on a separate page (for HTML and Man
328 # pages) or section (for LaTeX and RTF).
328 # pages) or section (for LaTeX and RTF).
329
329
330 INLINE_SIMPLE_STRUCTS = NO
330 INLINE_SIMPLE_STRUCTS = NO
331
331
332 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
332 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
333 # is documented as struct, union, or enum with the name of the typedef. So
333 # is documented as struct, union, or enum with the name of the typedef. So
334 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
334 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
335 # with name TypeT. When disabled the typedef will appear as a member of a file,
335 # with name TypeT. When disabled the typedef will appear as a member of a file,
336 # namespace, or class. And the struct will be named TypeS. This can typically
336 # namespace, or class. And the struct will be named TypeS. This can typically
337 # be useful for C code in case the coding convention dictates that all compound
337 # be useful for C code in case the coding convention dictates that all compound
338 # types are typedef'ed and only the typedef is referenced, never the tag name.
338 # types are typedef'ed and only the typedef is referenced, never the tag name.
339
339
340 TYPEDEF_HIDES_STRUCT = NO
340 TYPEDEF_HIDES_STRUCT = YES
341
341
342 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
342 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
343 # determine which symbols to keep in memory and which to flush to disk.
343 # determine which symbols to keep in memory and which to flush to disk.
344 # When the cache is full, less often used symbols will be written to disk.
344 # When the cache is full, less often used symbols will be written to disk.
345 # For small to medium size projects (<1000 input files) the default value is
345 # For small to medium size projects (<1000 input files) the default value is
346 # probably good enough. For larger projects a too small cache size can cause
346 # probably good enough. For larger projects a too small cache size can cause
347 # doxygen to be busy swapping symbols to and from disk most of the time
347 # doxygen to be busy swapping symbols to and from disk most of the time
348 # causing a significant performance penalty.
348 # causing a significant performance penalty.
349 # If the system has enough physical memory increasing the cache will improve the
349 # If the system has enough physical memory increasing the cache will improve the
350 # performance by keeping more symbols in memory. Note that the value works on
350 # performance by keeping more symbols in memory. Note that the value works on
351 # a logarithmic scale so increasing the size by one will roughly double the
351 # a logarithmic scale so increasing the size by one will roughly double the
352 # memory usage. The cache size is given by this formula:
352 # memory usage. The cache size is given by this formula:
353 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
353 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
354 # corresponding to a cache size of 2^16 = 65536 symbols.
354 # corresponding to a cache size of 2^16 = 65536 symbols.
355
355
356 SYMBOL_CACHE_SIZE = 0
356 SYMBOL_CACHE_SIZE = 0
357
357
358 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
358 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
359 # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
359 # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
360 # their name and scope. Since this can be an expensive process and often the
360 # their name and scope. Since this can be an expensive process and often the
361 # same symbol appear multiple times in the code, doxygen keeps a cache of
361 # same symbol appear multiple times in the code, doxygen keeps a cache of
362 # pre-resolved symbols. If the cache is too small doxygen will become slower.
362 # pre-resolved symbols. If the cache is too small doxygen will become slower.
363 # If the cache is too large, memory is wasted. The cache size is given by this
363 # If the cache is too large, memory is wasted. The cache size is given by this
364 # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
364 # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
365 # corresponding to a cache size of 2^16 = 65536 symbols.
365 # corresponding to a cache size of 2^16 = 65536 symbols.
366
366
367 LOOKUP_CACHE_SIZE = 0
367 LOOKUP_CACHE_SIZE = 0
368
368
369 #---------------------------------------------------------------------------
369 #---------------------------------------------------------------------------
370 # Build related configuration options
370 # Build related configuration options
371 #---------------------------------------------------------------------------
371 #---------------------------------------------------------------------------
372
372
373 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
373 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
374 # documentation are documented, even if no documentation was available.
374 # documentation are documented, even if no documentation was available.
375 # Private class members and static file members will be hidden unless
375 # Private class members and static file members will be hidden unless
376 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
376 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
377
377
378 EXTRACT_ALL = NO
378 EXTRACT_ALL = YES
379
379
380 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
380 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
381 # will be included in the documentation.
381 # will be included in the documentation.
382
382
383 EXTRACT_PRIVATE = NO
383 EXTRACT_PRIVATE = NO
384
384
385 # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
385 # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
386 # scope will be included in the documentation.
386 # scope will be included in the documentation.
387
387
388 EXTRACT_PACKAGE = NO
388 EXTRACT_PACKAGE = NO
389
389
390 # If the EXTRACT_STATIC tag is set to YES all static members of a file
390 # If the EXTRACT_STATIC tag is set to YES all static members of a file
391 # will be included in the documentation.
391 # will be included in the documentation.
392
392
393 EXTRACT_STATIC = NO
393 EXTRACT_STATIC = NO
394
394
395 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
395 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
396 # defined locally in source files will be included in the documentation.
396 # defined locally in source files will be included in the documentation.
397 # If set to NO only classes defined in header files are included.
397 # If set to NO only classes defined in header files are included.
398
398
399 EXTRACT_LOCAL_CLASSES = YES
399 EXTRACT_LOCAL_CLASSES = YES
400
400
401 # This flag is only useful for Objective-C code. When set to YES local
401 # This flag is only useful for Objective-C code. When set to YES local
402 # methods, which are defined in the implementation section but not in
402 # methods, which are defined in the implementation section but not in
403 # the interface are included in the documentation.
403 # the interface are included in the documentation.
404 # If set to NO (the default) only methods in the interface are included.
404 # If set to NO (the default) only methods in the interface are included.
405
405
406 EXTRACT_LOCAL_METHODS = NO
406 EXTRACT_LOCAL_METHODS = NO
407
407
408 # If this flag is set to YES, the members of anonymous namespaces will be
408 # If this flag is set to YES, the members of anonymous namespaces will be
409 # extracted and appear in the documentation as a namespace called
409 # extracted and appear in the documentation as a namespace called
410 # 'anonymous_namespace{file}', where file will be replaced with the base
410 # 'anonymous_namespace{file}', where file will be replaced with the base
411 # name of the file that contains the anonymous namespace. By default
411 # name of the file that contains the anonymous namespace. By default
412 # anonymous namespaces are hidden.
412 # anonymous namespaces are hidden.
413
413
414 EXTRACT_ANON_NSPACES = NO
414 EXTRACT_ANON_NSPACES = NO
415
415
416 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
416 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
417 # undocumented members of documented classes, files or namespaces.
417 # undocumented members of documented classes, files or namespaces.
418 # If set to NO (the default) these members will be included in the
418 # If set to NO (the default) these members will be included in the
419 # various overviews, but no documentation section is generated.
419 # various overviews, but no documentation section is generated.
420 # This option has no effect if EXTRACT_ALL is enabled.
420 # This option has no effect if EXTRACT_ALL is enabled.
421
421
422 HIDE_UNDOC_MEMBERS = NO
422 HIDE_UNDOC_MEMBERS = NO
423
423
424 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
424 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
425 # undocumented classes that are normally visible in the class hierarchy.
425 # undocumented classes that are normally visible in the class hierarchy.
426 # If set to NO (the default) these classes will be included in the various
426 # If set to NO (the default) these classes will be included in the various
427 # overviews. This option has no effect if EXTRACT_ALL is enabled.
427 # overviews. This option has no effect if EXTRACT_ALL is enabled.
428
428
429 HIDE_UNDOC_CLASSES = NO
429 HIDE_UNDOC_CLASSES = NO
430
430
431 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
431 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
432 # friend (class|struct|union) declarations.
432 # friend (class|struct|union) declarations.
433 # If set to NO (the default) these declarations will be included in the
433 # If set to NO (the default) these declarations will be included in the
434 # documentation.
434 # documentation.
435
435
436 HIDE_FRIEND_COMPOUNDS = NO
436 HIDE_FRIEND_COMPOUNDS = NO
437
437
438 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
438 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
439 # documentation blocks found inside the body of a function.
439 # documentation blocks found inside the body of a function.
440 # If set to NO (the default) these blocks will be appended to the
440 # If set to NO (the default) these blocks will be appended to the
441 # function's detailed documentation block.
441 # function's detailed documentation block.
442
442
443 HIDE_IN_BODY_DOCS = NO
443 HIDE_IN_BODY_DOCS = NO
444
444
445 # The INTERNAL_DOCS tag determines if documentation
445 # The INTERNAL_DOCS tag determines if documentation
446 # that is typed after a \internal command is included. If the tag is set
446 # that is typed after a \internal command is included. If the tag is set
447 # to NO (the default) then the documentation will be excluded.
447 # to NO (the default) then the documentation will be excluded.
448 # Set it to YES to include the internal documentation.
448 # Set it to YES to include the internal documentation.
449
449
450 INTERNAL_DOCS = NO
450 INTERNAL_DOCS = NO
451
451
452 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
452 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
453 # file names in lower-case letters. If set to YES upper-case letters are also
453 # file names in lower-case letters. If set to YES upper-case letters are also
454 # allowed. This is useful if you have classes or files whose names only differ
454 # allowed. This is useful if you have classes or files whose names only differ
455 # in case and if your file system supports case sensitive file names. Windows
455 # in case and if your file system supports case sensitive file names. Windows
456 # and Mac users are advised to set this option to NO.
456 # and Mac users are advised to set this option to NO.
457
457
458 CASE_SENSE_NAMES = NO
458 CASE_SENSE_NAMES = NO
459
459
460 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
460 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
461 # will show members with their full class and namespace scopes in the
461 # will show members with their full class and namespace scopes in the
462 # documentation. If set to YES the scope will be hidden.
462 # documentation. If set to YES the scope will be hidden.
463
463
464 HIDE_SCOPE_NAMES = YES
464 HIDE_SCOPE_NAMES = YES
465
465
466 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
466 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
467 # will put a list of the files that are included by a file in the documentation
467 # will put a list of the files that are included by a file in the documentation
468 # of that file.
468 # of that file.
469
469
470 SHOW_INCLUDE_FILES = YES
470 SHOW_INCLUDE_FILES = YES
471
471
472 # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
472 # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
473 # will list include files with double quotes in the documentation
473 # will list include files with double quotes in the documentation
474 # rather than with sharp brackets.
474 # rather than with sharp brackets.
475
475
476 FORCE_LOCAL_INCLUDES = NO
476 FORCE_LOCAL_INCLUDES = NO
477
477
478 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
478 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
479 # is inserted in the documentation for inline members.
479 # is inserted in the documentation for inline members.
480
480
481 INLINE_INFO = YES
481 INLINE_INFO = YES
482
482
483 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
483 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
484 # will sort the (detailed) documentation of file and class members
484 # will sort the (detailed) documentation of file and class members
485 # alphabetically by member name. If set to NO the members will appear in
485 # alphabetically by member name. If set to NO the members will appear in
486 # declaration order.
486 # declaration order.
487
487
488 SORT_MEMBER_DOCS = YES
488 SORT_MEMBER_DOCS = YES
489
489
490 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
490 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
491 # brief documentation of file, namespace and class members alphabetically
491 # brief documentation of file, namespace and class members alphabetically
492 # by member name. If set to NO (the default) the members will appear in
492 # by member name. If set to NO (the default) the members will appear in
493 # declaration order.
493 # declaration order.
494
494
495 SORT_BRIEF_DOCS = NO
495 SORT_BRIEF_DOCS = NO
496
496
497 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
497 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
498 # will sort the (brief and detailed) documentation of class members so that
498 # will sort the (brief and detailed) documentation of class members so that
499 # constructors and destructors are listed first. If set to NO (the default)
499 # constructors and destructors are listed first. If set to NO (the default)
500 # the constructors will appear in the respective orders defined by
500 # the constructors will appear in the respective orders defined by
501 # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
501 # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
502 # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
502 # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
503 # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
503 # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
504
504
505 SORT_MEMBERS_CTORS_1ST = NO
505 SORT_MEMBERS_CTORS_1ST = NO
506
506
507 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
507 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
508 # hierarchy of group names into alphabetical order. If set to NO (the default)
508 # hierarchy of group names into alphabetical order. If set to NO (the default)
509 # the group names will appear in their defined order.
509 # the group names will appear in their defined order.
510
510
511 SORT_GROUP_NAMES = NO
511 SORT_GROUP_NAMES = NO
512
512
513 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
513 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
514 # sorted by fully-qualified names, including namespaces. If set to
514 # sorted by fully-qualified names, including namespaces. If set to
515 # NO (the default), the class list will be sorted only by class name,
515 # NO (the default), the class list will be sorted only by class name,
516 # not including the namespace part.
516 # not including the namespace part.
517 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
517 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
518 # Note: This option applies only to the class list, not to the
518 # Note: This option applies only to the class list, not to the
519 # alphabetical list.
519 # alphabetical list.
520
520
521 SORT_BY_SCOPE_NAME = NO
521 SORT_BY_SCOPE_NAME = NO
522
522
523 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
523 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
524 # do proper type resolution of all parameters of a function it will reject a
524 # do proper type resolution of all parameters of a function it will reject a
525 # match between the prototype and the implementation of a member function even
525 # match between the prototype and the implementation of a member function even
526 # if there is only one candidate or it is obvious which candidate to choose
526 # if there is only one candidate or it is obvious which candidate to choose
527 # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
527 # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
528 # will still accept a match between prototype and implementation in such cases.
528 # will still accept a match between prototype and implementation in such cases.
529
529
530 STRICT_PROTO_MATCHING = NO
530 STRICT_PROTO_MATCHING = NO
531
531
532 # The GENERATE_TODOLIST tag can be used to enable (YES) or
532 # The GENERATE_TODOLIST tag can be used to enable (YES) or
533 # disable (NO) the todo list. This list is created by putting \todo
533 # disable (NO) the todo list. This list is created by putting \todo
534 # commands in the documentation.
534 # commands in the documentation.
535
535
536 GENERATE_TODOLIST = YES
536 GENERATE_TODOLIST = YES
537
537
538 # The GENERATE_TESTLIST tag can be used to enable (YES) or
538 # The GENERATE_TESTLIST tag can be used to enable (YES) or
539 # disable (NO) the test list. This list is created by putting \test
539 # disable (NO) the test list. This list is created by putting \test
540 # commands in the documentation.
540 # commands in the documentation.
541
541
542 GENERATE_TESTLIST = YES
542 GENERATE_TESTLIST = YES
543
543
544 # The GENERATE_BUGLIST tag can be used to enable (YES) or
544 # The GENERATE_BUGLIST tag can be used to enable (YES) or
545 # disable (NO) the bug list. This list is created by putting \bug
545 # disable (NO) the bug list. This list is created by putting \bug
546 # commands in the documentation.
546 # commands in the documentation.
547
547
548 GENERATE_BUGLIST = YES
548 GENERATE_BUGLIST = YES
549
549
550 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
550 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
551 # disable (NO) the deprecated list. This list is created by putting
551 # disable (NO) the deprecated list. This list is created by putting
552 # \deprecated commands in the documentation.
552 # \deprecated commands in the documentation.
553
553
554 GENERATE_DEPRECATEDLIST= YES
554 GENERATE_DEPRECATEDLIST= YES
555
555
556 # The ENABLED_SECTIONS tag can be used to enable conditional
556 # The ENABLED_SECTIONS tag can be used to enable conditional
557 # documentation sections, marked by \if section-label ... \endif
557 # documentation sections, marked by \if section-label ... \endif
558 # and \cond section-label ... \endcond blocks.
558 # and \cond section-label ... \endcond blocks.
559
559
560 ENABLED_SECTIONS =
560 ENABLED_SECTIONS =
561
561
562 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
562 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
563 # the initial value of a variable or macro consists of for it to appear in
563 # the initial value of a variable or macro consists of for it to appear in
564 # the documentation. If the initializer consists of more lines than specified
564 # the documentation. If the initializer consists of more lines than specified
565 # here it will be hidden. Use a value of 0 to hide initializers completely.
565 # here it will be hidden. Use a value of 0 to hide initializers completely.
566 # The appearance of the initializer of individual variables and macros in the
566 # The appearance of the initializer of individual variables and macros in the
567 # documentation can be controlled using \showinitializer or \hideinitializer
567 # documentation can be controlled using \showinitializer or \hideinitializer
568 # command in the documentation regardless of this setting.
568 # command in the documentation regardless of this setting.
569
569
570 MAX_INITIALIZER_LINES = 30
570 MAX_INITIALIZER_LINES = 30
571
571
572 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated
572 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated
573 # at the bottom of the documentation of classes and structs. If set to YES the
573 # at the bottom of the documentation of classes and structs. If set to YES the
574 # list will mention the files that were used to generate the documentation.
574 # list will mention the files that were used to generate the documentation.
575
575
576 SHOW_USED_FILES = YES
576 SHOW_USED_FILES = YES
577
577
578 # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
578 # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
579 # This will remove the Files entry from the Quick Index and from the
579 # This will remove the Files entry from the Quick Index and from the
580 # Folder Tree View (if specified). The default is YES.
580 # Folder Tree View (if specified). The default is YES.
581
581
582 SHOW_FILES = YES
582 SHOW_FILES = YES
583
583
584 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the
584 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the
585 # Namespaces page. This will remove the Namespaces entry from the Quick Index
585 # Namespaces page. This will remove the Namespaces entry from the Quick Index
586 # and from the Folder Tree View (if specified). The default is YES.
586 # and from the Folder Tree View (if specified). The default is YES.
587
587
588 SHOW_NAMESPACES = YES
588 SHOW_NAMESPACES = YES
589
589
590 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
590 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
591 # doxygen should invoke to get the current version for each file (typically from
591 # doxygen should invoke to get the current version for each file (typically from
592 # the version control system). Doxygen will invoke the program by executing (via
592 # the version control system). Doxygen will invoke the program by executing (via
593 # popen()) the command <command> <input-file>, where <command> is the value of
593 # popen()) the command <command> <input-file>, where <command> is the value of
594 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
594 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
595 # provided by doxygen. Whatever the program writes to standard output
595 # provided by doxygen. Whatever the program writes to standard output
596 # is used as the file version. See the manual for examples.
596 # is used as the file version. See the manual for examples.
597
597
598 FILE_VERSION_FILTER =
598 FILE_VERSION_FILTER =
599
599
600 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
600 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
601 # by doxygen. The layout file controls the global structure of the generated
601 # by doxygen. The layout file controls the global structure of the generated
602 # output files in an output format independent way. To create the layout file
602 # output files in an output format independent way. To create the layout file
603 # that represents doxygen's defaults, run doxygen with the -l option.
603 # that represents doxygen's defaults, run doxygen with the -l option.
604 # You can optionally specify a file name after the option, if omitted
604 # You can optionally specify a file name after the option, if omitted
605 # DoxygenLayout.xml will be used as the name of the layout file.
605 # DoxygenLayout.xml will be used as the name of the layout file.
606
606
607 LAYOUT_FILE =
607 LAYOUT_FILE =
608
608
609 # The CITE_BIB_FILES tag can be used to specify one or more bib files
609 # The CITE_BIB_FILES tag can be used to specify one or more bib files
610 # containing the references data. This must be a list of .bib files. The
610 # containing the references data. This must be a list of .bib files. The
611 # .bib extension is automatically appended if omitted. Using this command
611 # .bib extension is automatically appended if omitted. Using this command
612 # requires the bibtex tool to be installed. See also
612 # requires the bibtex tool to be installed. See also
613 # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
613 # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
614 # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
614 # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
615 # feature you need bibtex and perl available in the search path. Do not use
615 # feature you need bibtex and perl available in the search path. Do not use
616 # file names with spaces, bibtex cannot handle them.
616 # file names with spaces, bibtex cannot handle them.
617
617
618 CITE_BIB_FILES =
618 CITE_BIB_FILES =
619
619
620 #---------------------------------------------------------------------------
620 #---------------------------------------------------------------------------
621 # configuration options related to warning and progress messages
621 # configuration options related to warning and progress messages
622 #---------------------------------------------------------------------------
622 #---------------------------------------------------------------------------
623
623
624 # The QUIET tag can be used to turn on/off the messages that are generated
624 # The QUIET tag can be used to turn on/off the messages that are generated
625 # by doxygen. Possible values are YES and NO. If left blank NO is used.
625 # by doxygen. Possible values are YES and NO. If left blank NO is used.
626
626
627 QUIET = NO
627 QUIET = NO
628
628
629 # The WARNINGS tag can be used to turn on/off the warning messages that are
629 # The WARNINGS tag can be used to turn on/off the warning messages that are
630 # generated by doxygen. Possible values are YES and NO. If left blank
630 # generated by doxygen. Possible values are YES and NO. If left blank
631 # NO is used.
631 # NO is used.
632
632
633 WARNINGS = YES
633 WARNINGS = YES
634
634
635 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
635 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
636 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will
636 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will
637 # automatically be disabled.
637 # automatically be disabled.
638
638
639 WARN_IF_UNDOCUMENTED = YES
639 WARN_IF_UNDOCUMENTED = YES
640
640
641 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
641 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
642 # potential errors in the documentation, such as not documenting some
642 # potential errors in the documentation, such as not documenting some
643 # parameters in a documented function, or documenting parameters that
643 # parameters in a documented function, or documenting parameters that
644 # don't exist or using markup commands wrongly.
644 # don't exist or using markup commands wrongly.
645
645
646 WARN_IF_DOC_ERROR = YES
646 WARN_IF_DOC_ERROR = YES
647
647
648 # The WARN_NO_PARAMDOC option can be enabled to get warnings for
648 # The WARN_NO_PARAMDOC option can be enabled to get warnings for
649 # functions that are documented, but have no documentation for their parameters
649 # functions that are documented, but have no documentation for their parameters
650 # or return value. If set to NO (the default) doxygen will only warn about
650 # or return value. If set to NO (the default) doxygen will only warn about
651 # wrong or incomplete parameter documentation, but not about the absence of
651 # wrong or incomplete parameter documentation, but not about the absence of
652 # documentation.
652 # documentation.
653
653
654 WARN_NO_PARAMDOC = NO
654 WARN_NO_PARAMDOC = NO
655
655
656 # The WARN_FORMAT tag determines the format of the warning messages that
656 # The WARN_FORMAT tag determines the format of the warning messages that
657 # doxygen can produce. The string should contain the $file, $line, and $text
657 # doxygen can produce. The string should contain the $file, $line, and $text
658 # tags, which will be replaced by the file and line number from which the
658 # tags, which will be replaced by the file and line number from which the
659 # warning originated and the warning text. Optionally the format may contain
659 # warning originated and the warning text. Optionally the format may contain
660 # $version, which will be replaced by the version of the file (if it could
660 # $version, which will be replaced by the version of the file (if it could
661 # be obtained via FILE_VERSION_FILTER)
661 # be obtained via FILE_VERSION_FILTER)
662
662
663 WARN_FORMAT = "$file:$line: $text"
663 WARN_FORMAT = "$file:$line: $text"
664
664
665 # The WARN_LOGFILE tag can be used to specify a file to which warning
665 # The WARN_LOGFILE tag can be used to specify a file to which warning
666 # and error messages should be written. If left blank the output is written
666 # and error messages should be written. If left blank the output is written
667 # to stderr.
667 # to stderr.
668
668
669 WARN_LOGFILE =
669 WARN_LOGFILE =
670
670
671 #---------------------------------------------------------------------------
671 #---------------------------------------------------------------------------
672 # configuration options related to the input files
672 # configuration options related to the input files
673 #---------------------------------------------------------------------------
673 #---------------------------------------------------------------------------
674
674
675 # The INPUT tag can be used to specify the files and/or directories that contain
675 # The INPUT tag can be used to specify the files and/or directories that contain
676 # documented source files. You may enter file names like "myfile.cpp" or
676 # documented source files. You may enter file names like "myfile.cpp" or
677 # directories like "/usr/src/myproject". Separate the files or directories
677 # directories like "/usr/src/myproject". Separate the files or directories
678 # with spaces.
678 # with spaces.
679
679
680 INPUT = /opt/libuc2
680 INPUT = include
681
681
682 # This tag can be used to specify the character encoding of the source files
682 # This tag can be used to specify the character encoding of the source files
683 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
683 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
684 # also the default input encoding. Doxygen uses libiconv (or the iconv built
684 # also the default input encoding. Doxygen uses libiconv (or the iconv built
685 # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
685 # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
686 # the list of possible encodings.
686 # the list of possible encodings.
687
687
688 INPUT_ENCODING = UTF-8
688 INPUT_ENCODING = UTF-8
689
689
690 # If the value of the INPUT tag contains directories, you can use the
690 # If the value of the INPUT tag contains directories, you can use the
691 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
691 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
692 # and *.h) to filter out the source-files in the directories. If left
692 # and *.h) to filter out the source-files in the directories. If left
693 # blank the following patterns are tested:
693 # blank the following patterns are tested:
694 # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
694 # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
695 # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
695 # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
696 # *.f90 *.f *.for *.vhd *.vhdl
696 # *.f90 *.f *.for *.vhd *.vhdl
697
697
698 FILE_PATTERNS = *.c \
698 FILE_PATTERNS = *.c \
699 *.cc \
699 *.cc \
700 *.cxx \
700 *.cxx \
701 *.cpp \
701 *.cpp \
702 *.c++ \
702 *.c++ \
703 *.d \
703 *.d \
704 *.java \
704 *.java \
705 *.ii \
705 *.ii \
706 *.ixx \
706 *.ixx \
707 *.ipp \
707 *.ipp \
708 *.i++ \
708 *.i++ \
709 *.inl \
709 *.inl \
710 *.h \
710 *.h \
711 *.hh \
711 *.hh \
712 *.hxx \
712 *.hxx \
713 *.hpp \
713 *.hpp \
714 *.h++ \
714 *.h++ \
715 *.idl \
715 *.idl \
716 *.odl \
716 *.odl \
717 *.cs \
717 *.cs \
718 *.php \
718 *.php \
719 *.php3 \
719 *.php3 \
720 *.inc \
720 *.inc \
721 *.m \
721 *.m \
722 *.markdown \
722 *.markdown \
723 *.md \
723 *.md \
724 *.mm \
724 *.mm \
725 *.dox \
725 *.dox \
726 *.py \
726 *.py \
727 *.f90 \
727 *.f90 \
728 *.f \
728 *.f \
729 *.for \
729 *.for \
730 *.vhd \
730 *.vhd \
731 *.vhdl
731 *.vhdl
732
732
733 # The RECURSIVE tag can be used to turn specify whether or not subdirectories
733 # The RECURSIVE tag can be used to turn specify whether or not subdirectories
734 # should be searched for input files as well. Possible values are YES and NO.
734 # should be searched for input files as well. Possible values are YES and NO.
735 # If left blank NO is used.
735 # If left blank NO is used.
736
736
737 RECURSIVE = YES
737 RECURSIVE = YES
738
738
739 # The EXCLUDE tag can be used to specify files and/or directories that should be
739 # The EXCLUDE tag can be used to specify files and/or directories that should be
740 # excluded from the INPUT source files. This way you can easily exclude a
740 # excluded from the INPUT source files. This way you can easily exclude a
741 # subdirectory from a directory tree whose root is specified with the INPUT tag.
741 # subdirectory from a directory tree whose root is specified with the INPUT tag.
742 # Note that relative paths are relative to the directory from which doxygen is
742 # Note that relative paths are relative to the directory from which doxygen is
743 # run.
743 # run.
744
744
745 EXCLUDE =
745 EXCLUDE =
746
746
747 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
747 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
748 # directories that are symbolic links (a Unix file system feature) are excluded
748 # directories that are symbolic links (a Unix file system feature) are excluded
749 # from the input.
749 # from the input.
750
750
751 EXCLUDE_SYMLINKS = NO
751 EXCLUDE_SYMLINKS = NO
752
752
753 # If the value of the INPUT tag contains directories, you can use the
753 # If the value of the INPUT tag contains directories, you can use the
754 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
754 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
755 # certain files from those directories. Note that the wildcards are matched
755 # certain files from those directories. Note that the wildcards are matched
756 # against the file with absolute path, so to exclude all test directories
756 # against the file with absolute path, so to exclude all test directories
757 # for example use the pattern */test/*
757 # for example use the pattern */test/*
758
758
759 EXCLUDE_PATTERNS =
759 EXCLUDE_PATTERNS =
760
760
761 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
761 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
762 # (namespaces, classes, functions, etc.) that should be excluded from the
762 # (namespaces, classes, functions, etc.) that should be excluded from the
763 # output. The symbol name can be a fully qualified name, a word, or if the
763 # output. The symbol name can be a fully qualified name, a word, or if the
764 # wildcard * is used, a substring. Examples: ANamespace, AClass,
764 # wildcard * is used, a substring. Examples: ANamespace, AClass,
765 # AClass::ANamespace, ANamespace::*Test
765 # AClass::ANamespace, ANamespace::*Test
766
766
767 EXCLUDE_SYMBOLS =
767 EXCLUDE_SYMBOLS =
768
768
769 # The EXAMPLE_PATH tag can be used to specify one or more files or
769 # The EXAMPLE_PATH tag can be used to specify one or more files or
770 # directories that contain example code fragments that are included (see
770 # directories that contain example code fragments that are included (see
771 # the \include command).
771 # the \include command).
772
772
773 EXAMPLE_PATH =
773 EXAMPLE_PATH =
774
774
775 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
775 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
776 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
776 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
777 # and *.h) to filter out the source-files in the directories. If left
777 # and *.h) to filter out the source-files in the directories. If left
778 # blank all files are included.
778 # blank all files are included.
779
779
780 EXAMPLE_PATTERNS = *
780 EXAMPLE_PATTERNS = *
781
781
782 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
782 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
783 # searched for input files to be used with the \include or \dontinclude
783 # searched for input files to be used with the \include or \dontinclude
784 # commands irrespective of the value of the RECURSIVE tag.
784 # commands irrespective of the value of the RECURSIVE tag.
785 # Possible values are YES and NO. If left blank NO is used.
785 # Possible values are YES and NO. If left blank NO is used.
786
786
787 EXAMPLE_RECURSIVE = NO
787 EXAMPLE_RECURSIVE = NO
788
788
789 # The IMAGE_PATH tag can be used to specify one or more files or
789 # The IMAGE_PATH tag can be used to specify one or more files or
790 # directories that contain image that are included in the documentation (see
790 # directories that contain image that are included in the documentation (see
791 # the \image command).
791 # the \image command).
792
792
793 IMAGE_PATH =
793 IMAGE_PATH =
794
794
795 # The INPUT_FILTER tag can be used to specify a program that doxygen should
795 # The INPUT_FILTER tag can be used to specify a program that doxygen should
796 # invoke to filter for each input file. Doxygen will invoke the filter program
796 # invoke to filter for each input file. Doxygen will invoke the filter program
797 # by executing (via popen()) the command <filter> <input-file>, where <filter>
797 # by executing (via popen()) the command <filter> <input-file>, where <filter>
798 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an
798 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an
799 # input file. Doxygen will then use the output that the filter program writes
799 # input file. Doxygen will then use the output that the filter program writes
800 # to standard output. If FILTER_PATTERNS is specified, this tag will be
800 # to standard output. If FILTER_PATTERNS is specified, this tag will be
801 # ignored.
801 # ignored.
802
802
803 INPUT_FILTER =
803 INPUT_FILTER =
804
804
805 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
805 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
806 # basis. Doxygen will compare the file name with each pattern and apply the
806 # basis. Doxygen will compare the file name with each pattern and apply the
807 # filter if there is a match. The filters are a list of the form:
807 # filter if there is a match. The filters are a list of the form:
808 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
808 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
809 # info on how filters are used. If FILTER_PATTERNS is empty or if
809 # info on how filters are used. If FILTER_PATTERNS is empty or if
810 # non of the patterns match the file name, INPUT_FILTER is applied.
810 # non of the patterns match the file name, INPUT_FILTER is applied.
811
811
812 FILTER_PATTERNS =
812 FILTER_PATTERNS =
813
813
814 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
814 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
815 # INPUT_FILTER) will be used to filter the input files when producing source
815 # INPUT_FILTER) will be used to filter the input files when producing source
816 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
816 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
817
817
818 FILTER_SOURCE_FILES = NO
818 FILTER_SOURCE_FILES = NO
819
819
820 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
820 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
821 # pattern. A pattern will override the setting for FILTER_PATTERN (if any)
821 # pattern. A pattern will override the setting for FILTER_PATTERN (if any)
822 # and it is also possible to disable source filtering for a specific pattern
822 # and it is also possible to disable source filtering for a specific pattern
823 # using *.ext= (so without naming a filter). This option only has effect when
823 # using *.ext= (so without naming a filter). This option only has effect when
824 # FILTER_SOURCE_FILES is enabled.
824 # FILTER_SOURCE_FILES is enabled.
825
825
826 FILTER_SOURCE_PATTERNS =
826 FILTER_SOURCE_PATTERNS =
827
827
828 # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
828 # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
829 # is part of the input, its contents will be placed on the main page (index.html).
829 # is part of the input, its contents will be placed on the main page (index.html).
830 # This can be useful if you have a project on for instance GitHub and want reuse
830 # This can be useful if you have a project on for instance GitHub and want reuse
831 # the introduction page also for the doxygen output.
831 # the introduction page also for the doxygen output.
832
832
833 USE_MDFILE_AS_MAINPAGE =
833 USE_MDFILE_AS_MAINPAGE =
834
834
835 #---------------------------------------------------------------------------
835 #---------------------------------------------------------------------------
836 # configuration options related to source browsing
836 # configuration options related to source browsing
837 #---------------------------------------------------------------------------
837 #---------------------------------------------------------------------------
838
838
839 # If the SOURCE_BROWSER tag is set to YES then a list of source files will
839 # If the SOURCE_BROWSER tag is set to YES then a list of source files will
840 # be generated. Documented entities will be cross-referenced with these sources.
840 # be generated. Documented entities will be cross-referenced with these sources.
841 # Note: To get rid of all source code in the generated output, make sure also
841 # Note: To get rid of all source code in the generated output, make sure also
842 # VERBATIM_HEADERS is set to NO.
842 # VERBATIM_HEADERS is set to NO.
843
843
844 SOURCE_BROWSER = NO
844 SOURCE_BROWSER = NO
845
845
846 # Setting the INLINE_SOURCES tag to YES will include the body
846 # Setting the INLINE_SOURCES tag to YES will include the body
847 # of functions and classes directly in the documentation.
847 # of functions and classes directly in the documentation.
848
848
849 INLINE_SOURCES = NO
849 INLINE_SOURCES = NO
850
850
851 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
851 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
852 # doxygen to hide any special comment blocks from generated source code
852 # doxygen to hide any special comment blocks from generated source code
853 # fragments. Normal C, C++ and Fortran comments will always remain visible.
853 # fragments. Normal C, C++ and Fortran comments will always remain visible.
854
854
855 STRIP_CODE_COMMENTS = YES
855 STRIP_CODE_COMMENTS = YES
856
856
857 # If the REFERENCED_BY_RELATION tag is set to YES
857 # If the REFERENCED_BY_RELATION tag is set to YES
858 # then for each documented function all documented
858 # then for each documented function all documented
859 # functions referencing it will be listed.
859 # functions referencing it will be listed.
860
860
861 REFERENCED_BY_RELATION = NO
861 REFERENCED_BY_RELATION = NO
862
862
863 # If the REFERENCES_RELATION tag is set to YES
863 # If the REFERENCES_RELATION tag is set to YES
864 # then for each documented function all documented entities
864 # then for each documented function all documented entities
865 # called/used by that function will be listed.
865 # called/used by that function will be listed.
866
866
867 REFERENCES_RELATION = NO
867 REFERENCES_RELATION = NO
868
868
869 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
869 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
870 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
870 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
871 # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
871 # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
872 # link to the source code. Otherwise they will link to the documentation.
872 # link to the source code. Otherwise they will link to the documentation.
873
873
874 REFERENCES_LINK_SOURCE = YES
874 REFERENCES_LINK_SOURCE = YES
875
875
876 # If the USE_HTAGS tag is set to YES then the references to source code
876 # If the USE_HTAGS tag is set to YES then the references to source code
877 # will point to the HTML generated by the htags(1) tool instead of doxygen
877 # will point to the HTML generated by the htags(1) tool instead of doxygen
878 # built-in source browser. The htags tool is part of GNU's global source
878 # built-in source browser. The htags tool is part of GNU's global source
879 # tagging system (see http://www.gnu.org/software/global/global.html). You
879 # tagging system (see http://www.gnu.org/software/global/global.html). You
880 # will need version 4.8.6 or higher.
880 # will need version 4.8.6 or higher.
881
881
882 USE_HTAGS = NO
882 USE_HTAGS = NO
883
883
884 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
884 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
885 # will generate a verbatim copy of the header file for each class for
885 # will generate a verbatim copy of the header file for each class for
886 # which an include is specified. Set to NO to disable this.
886 # which an include is specified. Set to NO to disable this.
887
887
888 VERBATIM_HEADERS = YES
888 VERBATIM_HEADERS = YES
889
889
890 #---------------------------------------------------------------------------
890 #---------------------------------------------------------------------------
891 # configuration options related to the alphabetical class index
891 # configuration options related to the alphabetical class index
892 #---------------------------------------------------------------------------
892 #---------------------------------------------------------------------------
893
893
894 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
894 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
895 # of all compounds will be generated. Enable this if the project
895 # of all compounds will be generated. Enable this if the project
896 # contains a lot of classes, structs, unions or interfaces.
896 # contains a lot of classes, structs, unions or interfaces.
897
897
898 ALPHABETICAL_INDEX = YES
898 ALPHABETICAL_INDEX = YES
899
899
900 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
900 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
901 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
901 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
902 # in which this list will be split (can be a number in the range [1..20])
902 # in which this list will be split (can be a number in the range [1..20])
903
903
904 COLS_IN_ALPHA_INDEX = 5
904 COLS_IN_ALPHA_INDEX = 5
905
905
906 # In case all classes in a project start with a common prefix, all
906 # In case all classes in a project start with a common prefix, all
907 # classes will be put under the same header in the alphabetical index.
907 # classes will be put under the same header in the alphabetical index.
908 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that
908 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that
909 # should be ignored while generating the index headers.
909 # should be ignored while generating the index headers.
910
910
911 IGNORE_PREFIX =
911 IGNORE_PREFIX =
912
912
913 #---------------------------------------------------------------------------
913 #---------------------------------------------------------------------------
914 # configuration options related to the HTML output
914 # configuration options related to the HTML output
915 #---------------------------------------------------------------------------
915 #---------------------------------------------------------------------------
916
916
917 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will
917 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will
918 # generate HTML output.
918 # generate HTML output.
919
919
920 GENERATE_HTML = YES
920 GENERATE_HTML = YES
921
921
922 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
922 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
923 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
923 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
924 # put in front of it. If left blank `html' will be used as the default path.
924 # put in front of it. If left blank `html' will be used as the default path.
925
925
926 HTML_OUTPUT = html
926 HTML_OUTPUT = html
927
927
928 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for
928 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for
929 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank
929 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank
930 # doxygen will generate files with .html extension.
930 # doxygen will generate files with .html extension.
931
931
932 HTML_FILE_EXTENSION = .html
932 HTML_FILE_EXTENSION = .html
933
933
934 # The HTML_HEADER tag can be used to specify a personal HTML header for
934 # The HTML_HEADER tag can be used to specify a personal HTML header for
935 # each generated HTML page. If it is left blank doxygen will generate a
935 # each generated HTML page. If it is left blank doxygen will generate a
936 # standard header. Note that when using a custom header you are responsible
936 # standard header. Note that when using a custom header you are responsible
937 # for the proper inclusion of any scripts and style sheets that doxygen
937 # for the proper inclusion of any scripts and style sheets that doxygen
938 # needs, which is dependent on the configuration options used.
938 # needs, which is dependent on the configuration options used.
939 # It is advised to generate a default header using "doxygen -w html
939 # It is advised to generate a default header using "doxygen -w html
940 # header.html footer.html stylesheet.css YourConfigFile" and then modify
940 # header.html footer.html stylesheet.css YourConfigFile" and then modify
941 # that header. Note that the header is subject to change so you typically
941 # that header. Note that the header is subject to change so you typically
942 # have to redo this when upgrading to a newer version of doxygen or when
942 # have to redo this when upgrading to a newer version of doxygen or when
943 # changing the value of configuration settings such as GENERATE_TREEVIEW!
943 # changing the value of configuration settings such as GENERATE_TREEVIEW!
944
944
945 HTML_HEADER =
945 HTML_HEADER =
946
946
947 # The HTML_FOOTER tag can be used to specify a personal HTML footer for
947 # The HTML_FOOTER tag can be used to specify a personal HTML footer for
948 # each generated HTML page. If it is left blank doxygen will generate a
948 # each generated HTML page. If it is left blank doxygen will generate a
949 # standard footer.
949 # standard footer.
950
950
951 HTML_FOOTER =
951 HTML_FOOTER =
952
952
953 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
953 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
954 # style sheet that is used by each HTML page. It can be used to
954 # style sheet that is used by each HTML page. It can be used to
955 # fine-tune the look of the HTML output. If left blank doxygen will
955 # fine-tune the look of the HTML output. If left blank doxygen will
956 # generate a default style sheet. Note that it is recommended to use
956 # generate a default style sheet. Note that it is recommended to use
957 # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
957 # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
958 # tag will in the future become obsolete.
958 # tag will in the future become obsolete.
959
959
960 HTML_STYLESHEET =
960 HTML_STYLESHEET =
961
961
962 # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
962 # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
963 # user-defined cascading style sheet that is included after the standard
963 # user-defined cascading style sheet that is included after the standard
964 # style sheets created by doxygen. Using this option one can overrule
964 # style sheets created by doxygen. Using this option one can overrule
965 # certain style aspects. This is preferred over using HTML_STYLESHEET
965 # certain style aspects. This is preferred over using HTML_STYLESHEET
966 # since it does not replace the standard style sheet and is therefor more
966 # since it does not replace the standard style sheet and is therefor more
967 # robust against future updates. Doxygen will copy the style sheet file to
967 # robust against future updates. Doxygen will copy the style sheet file to
968 # the output directory.
968 # the output directory.
969
969
970 HTML_EXTRA_STYLESHEET =
970 HTML_EXTRA_STYLESHEET =
971
971
972 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
972 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
973 # other source files which should be copied to the HTML output directory. Note
973 # other source files which should be copied to the HTML output directory. Note
974 # that these files will be copied to the base HTML output directory. Use the
974 # that these files will be copied to the base HTML output directory. Use the
975 # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
975 # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
976 # files. In the HTML_STYLESHEET file, use the file name only. Also note that
976 # files. In the HTML_STYLESHEET file, use the file name only. Also note that
977 # the files will be copied as-is; there are no commands or markers available.
977 # the files will be copied as-is; there are no commands or markers available.
978
978
979 HTML_EXTRA_FILES =
979 HTML_EXTRA_FILES =
980
980
981 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
981 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
982 # Doxygen will adjust the colors in the style sheet and background images
982 # Doxygen will adjust the colors in the style sheet and background images
983 # according to this color. Hue is specified as an angle on a colorwheel,
983 # according to this color. Hue is specified as an angle on a colorwheel,
984 # see http://en.wikipedia.org/wiki/Hue for more information.
984 # see http://en.wikipedia.org/wiki/Hue for more information.
985 # For instance the value 0 represents red, 60 is yellow, 120 is green,
985 # For instance the value 0 represents red, 60 is yellow, 120 is green,
986 # 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
986 # 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
987 # The allowed range is 0 to 359.
987 # The allowed range is 0 to 359.
988
988
989 HTML_COLORSTYLE_HUE = 220
989 HTML_COLORSTYLE_HUE = 220
990
990
991 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
991 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
992 # the colors in the HTML output. For a value of 0 the output will use
992 # the colors in the HTML output. For a value of 0 the output will use
993 # grayscales only. A value of 255 will produce the most vivid colors.
993 # grayscales only. A value of 255 will produce the most vivid colors.
994
994
995 HTML_COLORSTYLE_SAT = 100
995 HTML_COLORSTYLE_SAT = 100
996
996
997 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
997 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
998 # the luminance component of the colors in the HTML output. Values below
998 # the luminance component of the colors in the HTML output. Values below
999 # 100 gradually make the output lighter, whereas values above 100 make
999 # 100 gradually make the output lighter, whereas values above 100 make
1000 # the output darker. The value divided by 100 is the actual gamma applied,
1000 # the output darker. The value divided by 100 is the actual gamma applied,
1001 # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1001 # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1002 # and 100 does not change the gamma.
1002 # and 100 does not change the gamma.
1003
1003
1004 HTML_COLORSTYLE_GAMMA = 80
1004 HTML_COLORSTYLE_GAMMA = 80
1005
1005
1006 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1006 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1007 # page will contain the date and time when the page was generated. Setting
1007 # page will contain the date and time when the page was generated. Setting
1008 # this to NO can help when comparing the output of multiple runs.
1008 # this to NO can help when comparing the output of multiple runs.
1009
1009
1010 HTML_TIMESTAMP = YES
1010 HTML_TIMESTAMP = YES
1011
1011
1012 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1012 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1013 # documentation will contain sections that can be hidden and shown after the
1013 # documentation will contain sections that can be hidden and shown after the
1014 # page has loaded.
1014 # page has loaded.
1015
1015
1016 HTML_DYNAMIC_SECTIONS = NO
1016 HTML_DYNAMIC_SECTIONS = NO
1017
1017
1018 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
1018 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
1019 # entries shown in the various tree structured indices initially; the user
1019 # entries shown in the various tree structured indices initially; the user
1020 # can expand and collapse entries dynamically later on. Doxygen will expand
1020 # can expand and collapse entries dynamically later on. Doxygen will expand
1021 # the tree to such a level that at most the specified number of entries are
1021 # the tree to such a level that at most the specified number of entries are
1022 # visible (unless a fully collapsed tree already exceeds this amount).
1022 # visible (unless a fully collapsed tree already exceeds this amount).
1023 # So setting the number of entries 1 will produce a full collapsed tree by
1023 # So setting the number of entries 1 will produce a full collapsed tree by
1024 # default. 0 is a special value representing an infinite number of entries
1024 # default. 0 is a special value representing an infinite number of entries
1025 # and will result in a full expanded tree by default.
1025 # and will result in a full expanded tree by default.
1026
1026
1027 HTML_INDEX_NUM_ENTRIES = 100
1027 HTML_INDEX_NUM_ENTRIES = 100
1028
1028
1029 # If the GENERATE_DOCSET tag is set to YES, additional index files
1029 # If the GENERATE_DOCSET tag is set to YES, additional index files
1030 # will be generated that can be used as input for Apple's Xcode 3
1030 # will be generated that can be used as input for Apple's Xcode 3
1031 # integrated development environment, introduced with OSX 10.5 (Leopard).
1031 # integrated development environment, introduced with OSX 10.5 (Leopard).
1032 # To create a documentation set, doxygen will generate a Makefile in the
1032 # To create a documentation set, doxygen will generate a Makefile in the
1033 # HTML output directory. Running make will produce the docset in that
1033 # HTML output directory. Running make will produce the docset in that
1034 # directory and running "make install" will install the docset in
1034 # directory and running "make install" will install the docset in
1035 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1035 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1036 # it at startup.
1036 # it at startup.
1037 # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1037 # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1038 # for more information.
1038 # for more information.
1039
1039
1040 GENERATE_DOCSET = NO
1040 GENERATE_DOCSET = NO
1041
1041
1042 # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1042 # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1043 # feed. A documentation feed provides an umbrella under which multiple
1043 # feed. A documentation feed provides an umbrella under which multiple
1044 # documentation sets from a single provider (such as a company or product suite)
1044 # documentation sets from a single provider (such as a company or product suite)
1045 # can be grouped.
1045 # can be grouped.
1046
1046
1047 DOCSET_FEEDNAME = "Doxygen generated docs"
1047 DOCSET_FEEDNAME = "Doxygen generated docs"
1048
1048
1049 # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1049 # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1050 # should uniquely identify the documentation set bundle. This should be a
1050 # should uniquely identify the documentation set bundle. This should be a
1051 # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1051 # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1052 # will append .docset to the name.
1052 # will append .docset to the name.
1053
1053
1054 DOCSET_BUNDLE_ID = org.doxygen.Project
1054 DOCSET_BUNDLE_ID = org.doxygen.Project
1055
1055
1056 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
1056 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
1057 # identify the documentation publisher. This should be a reverse domain-name
1057 # identify the documentation publisher. This should be a reverse domain-name
1058 # style string, e.g. com.mycompany.MyDocSet.documentation.
1058 # style string, e.g. com.mycompany.MyDocSet.documentation.
1059
1059
1060 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1060 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1061
1061
1062 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1062 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1063
1063
1064 DOCSET_PUBLISHER_NAME = Publisher
1064 DOCSET_PUBLISHER_NAME = Publisher
1065
1065
1066 # If the GENERATE_HTMLHELP tag is set to YES, additional index files
1066 # If the GENERATE_HTMLHELP tag is set to YES, additional index files
1067 # will be generated that can be used as input for tools like the
1067 # will be generated that can be used as input for tools like the
1068 # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1068 # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1069 # of the generated HTML documentation.
1069 # of the generated HTML documentation.
1070
1070
1071 GENERATE_HTMLHELP = NO
1071 GENERATE_HTMLHELP = NO
1072
1072
1073 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1073 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1074 # be used to specify the file name of the resulting .chm file. You
1074 # be used to specify the file name of the resulting .chm file. You
1075 # can add a path in front of the file if the result should not be
1075 # can add a path in front of the file if the result should not be
1076 # written to the html output directory.
1076 # written to the html output directory.
1077
1077
1078 CHM_FILE =
1078 CHM_FILE =
1079
1079
1080 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1080 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1081 # be used to specify the location (absolute path including file name) of
1081 # be used to specify the location (absolute path including file name) of
1082 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1082 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1083 # the HTML help compiler on the generated index.hhp.
1083 # the HTML help compiler on the generated index.hhp.
1084
1084
1085 HHC_LOCATION =
1085 HHC_LOCATION =
1086
1086
1087 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1087 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1088 # controls if a separate .chi index file is generated (YES) or that
1088 # controls if a separate .chi index file is generated (YES) or that
1089 # it should be included in the master .chm file (NO).
1089 # it should be included in the master .chm file (NO).
1090
1090
1091 GENERATE_CHI = NO
1091 GENERATE_CHI = NO
1092
1092
1093 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1093 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1094 # is used to encode HtmlHelp index (hhk), content (hhc) and project file
1094 # is used to encode HtmlHelp index (hhk), content (hhc) and project file
1095 # content.
1095 # content.
1096
1096
1097 CHM_INDEX_ENCODING =
1097 CHM_INDEX_ENCODING =
1098
1098
1099 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1099 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1100 # controls whether a binary table of contents is generated (YES) or a
1100 # controls whether a binary table of contents is generated (YES) or a
1101 # normal table of contents (NO) in the .chm file.
1101 # normal table of contents (NO) in the .chm file.
1102
1102
1103 BINARY_TOC = NO
1103 BINARY_TOC = NO
1104
1104
1105 # The TOC_EXPAND flag can be set to YES to add extra items for group members
1105 # The TOC_EXPAND flag can be set to YES to add extra items for group members
1106 # to the contents of the HTML help documentation and to the tree view.
1106 # to the contents of the HTML help documentation and to the tree view.
1107
1107
1108 TOC_EXPAND = NO
1108 TOC_EXPAND = NO
1109
1109
1110 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1110 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1111 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1111 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1112 # that can be used as input for Qt's qhelpgenerator to generate a
1112 # that can be used as input for Qt's qhelpgenerator to generate a
1113 # Qt Compressed Help (.qch) of the generated HTML documentation.
1113 # Qt Compressed Help (.qch) of the generated HTML documentation.
1114
1114
1115 GENERATE_QHP = NO
1115 GENERATE_QHP = NO
1116
1116
1117 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1117 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1118 # be used to specify the file name of the resulting .qch file.
1118 # be used to specify the file name of the resulting .qch file.
1119 # The path specified is relative to the HTML output folder.
1119 # The path specified is relative to the HTML output folder.
1120
1120
1121 QCH_FILE =
1121 QCH_FILE =
1122
1122
1123 # The QHP_NAMESPACE tag specifies the namespace to use when generating
1123 # The QHP_NAMESPACE tag specifies the namespace to use when generating
1124 # Qt Help Project output. For more information please see
1124 # Qt Help Project output. For more information please see
1125 # http://doc.trolltech.com/qthelpproject.html#namespace
1125 # http://doc.trolltech.com/qthelpproject.html#namespace
1126
1126
1127 QHP_NAMESPACE = org.doxygen.Project
1127 QHP_NAMESPACE = org.doxygen.Project
1128
1128
1129 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1129 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1130 # Qt Help Project output. For more information please see
1130 # Qt Help Project output. For more information please see
1131 # http://doc.trolltech.com/qthelpproject.html#virtual-folders
1131 # http://doc.trolltech.com/qthelpproject.html#virtual-folders
1132
1132
1133 QHP_VIRTUAL_FOLDER = doc
1133 QHP_VIRTUAL_FOLDER = doc
1134
1134
1135 # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1135 # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1136 # add. For more information please see
1136 # add. For more information please see
1137 # http://doc.trolltech.com/qthelpproject.html#custom-filters
1137 # http://doc.trolltech.com/qthelpproject.html#custom-filters
1138
1138
1139 QHP_CUST_FILTER_NAME =
1139 QHP_CUST_FILTER_NAME =
1140
1140
1141 # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1141 # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1142 # custom filter to add. For more information please see
1142 # custom filter to add. For more information please see
1143 # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1143 # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1144 # Qt Help Project / Custom Filters</a>.
1144 # Qt Help Project / Custom Filters</a>.
1145
1145
1146 QHP_CUST_FILTER_ATTRS =
1146 QHP_CUST_FILTER_ATTRS =
1147
1147
1148 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1148 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1149 # project's
1149 # project's
1150 # filter section matches.
1150 # filter section matches.
1151 # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1151 # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1152 # Qt Help Project / Filter Attributes</a>.
1152 # Qt Help Project / Filter Attributes</a>.
1153
1153
1154 QHP_SECT_FILTER_ATTRS =
1154 QHP_SECT_FILTER_ATTRS =
1155
1155
1156 # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1156 # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1157 # be used to specify the location of Qt's qhelpgenerator.
1157 # be used to specify the location of Qt's qhelpgenerator.
1158 # If non-empty doxygen will try to run qhelpgenerator on the generated
1158 # If non-empty doxygen will try to run qhelpgenerator on the generated
1159 # .qhp file.
1159 # .qhp file.
1160
1160
1161 QHG_LOCATION =
1161 QHG_LOCATION =
1162
1162
1163 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1163 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1164 # will be generated, which together with the HTML files, form an Eclipse help
1164 # will be generated, which together with the HTML files, form an Eclipse help
1165 # plugin. To install this plugin and make it available under the help contents
1165 # plugin. To install this plugin and make it available under the help contents
1166 # menu in Eclipse, the contents of the directory containing the HTML and XML
1166 # menu in Eclipse, the contents of the directory containing the HTML and XML
1167 # files needs to be copied into the plugins directory of eclipse. The name of
1167 # files needs to be copied into the plugins directory of eclipse. The name of
1168 # the directory within the plugins directory should be the same as
1168 # the directory within the plugins directory should be the same as
1169 # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1169 # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1170 # the help appears.
1170 # the help appears.
1171
1171
1172 GENERATE_ECLIPSEHELP = NO
1172 GENERATE_ECLIPSEHELP = NO
1173
1173
1174 # A unique identifier for the eclipse help plugin. When installing the plugin
1174 # A unique identifier for the eclipse help plugin. When installing the plugin
1175 # the directory name containing the HTML and XML files should also have
1175 # the directory name containing the HTML and XML files should also have
1176 # this name.
1176 # this name.
1177
1177
1178 ECLIPSE_DOC_ID = org.doxygen.Project
1178 ECLIPSE_DOC_ID = org.doxygen.Project
1179
1179
1180 # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1180 # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1181 # at top of each HTML page. The value NO (the default) enables the index and
1181 # at top of each HTML page. The value NO (the default) enables the index and
1182 # the value YES disables it. Since the tabs have the same information as the
1182 # the value YES disables it. Since the tabs have the same information as the
1183 # navigation tree you can set this option to NO if you already set
1183 # navigation tree you can set this option to NO if you already set
1184 # GENERATE_TREEVIEW to YES.
1184 # GENERATE_TREEVIEW to YES.
1185
1185
1186 DISABLE_INDEX = NO
1186 DISABLE_INDEX = NO
1187
1187
1188 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1188 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1189 # structure should be generated to display hierarchical information.
1189 # structure should be generated to display hierarchical information.
1190 # If the tag value is set to YES, a side panel will be generated
1190 # If the tag value is set to YES, a side panel will be generated
1191 # containing a tree-like index structure (just like the one that
1191 # containing a tree-like index structure (just like the one that
1192 # is generated for HTML Help). For this to work a browser that supports
1192 # is generated for HTML Help). For this to work a browser that supports
1193 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1193 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1194 # Windows users are probably better off using the HTML help feature.
1194 # Windows users are probably better off using the HTML help feature.
1195 # Since the tree basically has the same information as the tab index you
1195 # Since the tree basically has the same information as the tab index you
1196 # could consider to set DISABLE_INDEX to NO when enabling this option.
1196 # could consider to set DISABLE_INDEX to NO when enabling this option.
1197
1197
1198 GENERATE_TREEVIEW = NO
1198 GENERATE_TREEVIEW = NO
1199
1199
1200 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1200 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1201 # (range [0,1..20]) that doxygen will group on one line in the generated HTML
1201 # (range [0,1..20]) that doxygen will group on one line in the generated HTML
1202 # documentation. Note that a value of 0 will completely suppress the enum
1202 # documentation. Note that a value of 0 will completely suppress the enum
1203 # values from appearing in the overview section.
1203 # values from appearing in the overview section.
1204
1204
1205 ENUM_VALUES_PER_LINE = 4
1205 ENUM_VALUES_PER_LINE = 4
1206
1206
1207 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1207 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1208 # used to set the initial width (in pixels) of the frame in which the tree
1208 # used to set the initial width (in pixels) of the frame in which the tree
1209 # is shown.
1209 # is shown.
1210
1210
1211 TREEVIEW_WIDTH = 250
1211 TREEVIEW_WIDTH = 250
1212
1212
1213 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1213 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1214 # links to external symbols imported via tag files in a separate window.
1214 # links to external symbols imported via tag files in a separate window.
1215
1215
1216 EXT_LINKS_IN_WINDOW = NO
1216 EXT_LINKS_IN_WINDOW = NO
1217
1217
1218 # Use this tag to change the font size of Latex formulas included
1218 # Use this tag to change the font size of Latex formulas included
1219 # as images in the HTML documentation. The default is 10. Note that
1219 # as images in the HTML documentation. The default is 10. Note that
1220 # when you change the font size after a successful doxygen run you need
1220 # when you change the font size after a successful doxygen run you need
1221 # to manually remove any form_*.png images from the HTML output directory
1221 # to manually remove any form_*.png images from the HTML output directory
1222 # to force them to be regenerated.
1222 # to force them to be regenerated.
1223
1223
1224 FORMULA_FONTSIZE = 10
1224 FORMULA_FONTSIZE = 10
1225
1225
1226 # Use the FORMULA_TRANPARENT tag to determine whether or not the images
1226 # Use the FORMULA_TRANPARENT tag to determine whether or not the images
1227 # generated for formulas are transparent PNGs. Transparent PNGs are
1227 # generated for formulas are transparent PNGs. Transparent PNGs are
1228 # not supported properly for IE 6.0, but are supported on all modern browsers.
1228 # not supported properly for IE 6.0, but are supported on all modern browsers.
1229 # Note that when changing this option you need to delete any form_*.png files
1229 # Note that when changing this option you need to delete any form_*.png files
1230 # in the HTML output before the changes have effect.
1230 # in the HTML output before the changes have effect.
1231
1231
1232 FORMULA_TRANSPARENT = YES
1232 FORMULA_TRANSPARENT = YES
1233
1233
1234 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1234 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1235 # (see http://www.mathjax.org) which uses client side Javascript for the
1235 # (see http://www.mathjax.org) which uses client side Javascript for the
1236 # rendering instead of using prerendered bitmaps. Use this if you do not
1236 # rendering instead of using prerendered bitmaps. Use this if you do not
1237 # have LaTeX installed or if you want to formulas look prettier in the HTML
1237 # have LaTeX installed or if you want to formulas look prettier in the HTML
1238 # output. When enabled you may also need to install MathJax separately and
1238 # output. When enabled you may also need to install MathJax separately and
1239 # configure the path to it using the MATHJAX_RELPATH option.
1239 # configure the path to it using the MATHJAX_RELPATH option.
1240
1240
1241 USE_MATHJAX = NO
1241 USE_MATHJAX = NO
1242
1242
1243 # When MathJax is enabled you can set the default output format to be used for
1243 # When MathJax is enabled you can set the default output format to be used for
1244 # thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
1244 # thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
1245 # SVG. The default value is HTML-CSS, which is slower, but has the best
1245 # SVG. The default value is HTML-CSS, which is slower, but has the best
1246 # compatibility.
1246 # compatibility.
1247
1247
1248 MATHJAX_FORMAT = HTML-CSS
1248 MATHJAX_FORMAT = HTML-CSS
1249
1249
1250 # When MathJax is enabled you need to specify the location relative to the
1250 # When MathJax is enabled you need to specify the location relative to the
1251 # HTML output directory using the MATHJAX_RELPATH option. The destination
1251 # HTML output directory using the MATHJAX_RELPATH option. The destination
1252 # directory should contain the MathJax.js script. For instance, if the mathjax
1252 # directory should contain the MathJax.js script. For instance, if the mathjax
1253 # directory is located at the same level as the HTML output directory, then
1253 # directory is located at the same level as the HTML output directory, then
1254 # MATHJAX_RELPATH should be ../mathjax. The default value points to
1254 # MATHJAX_RELPATH should be ../mathjax. The default value points to
1255 # the MathJax Content Delivery Network so you can quickly see the result without
1255 # the MathJax Content Delivery Network so you can quickly see the result without
1256 # installing MathJax. However, it is strongly recommended to install a local
1256 # installing MathJax. However, it is strongly recommended to install a local
1257 # copy of MathJax from http://www.mathjax.org before deployment.
1257 # copy of MathJax from http://www.mathjax.org before deployment.
1258
1258
1259 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1259 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1260
1260
1261 # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1261 # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1262 # names that should be enabled during MathJax rendering.
1262 # names that should be enabled during MathJax rendering.
1263
1263
1264 MATHJAX_EXTENSIONS =
1264 MATHJAX_EXTENSIONS =
1265
1265
1266 # When the SEARCHENGINE tag is enabled doxygen will generate a search box
1266 # When the SEARCHENGINE tag is enabled doxygen will generate a search box
1267 # for the HTML output. The underlying search engine uses javascript
1267 # for the HTML output. The underlying search engine uses javascript
1268 # and DHTML and should work on any modern browser. Note that when using
1268 # and DHTML and should work on any modern browser. Note that when using
1269 # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1269 # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1270 # (GENERATE_DOCSET) there is already a search function so this one should
1270 # (GENERATE_DOCSET) there is already a search function so this one should
1271 # typically be disabled. For large projects the javascript based search engine
1271 # typically be disabled. For large projects the javascript based search engine
1272 # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1272 # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1273
1273
1274 SEARCHENGINE = YES
1274 SEARCHENGINE = YES
1275
1275
1276 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1276 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1277 # implemented using a web server instead of a web client using Javascript.
1277 # implemented using a web server instead of a web client using Javascript.
1278 # There are two flavours of web server based search depending on the
1278 # There are two flavours of web server based search depending on the
1279 # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
1279 # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
1280 # searching and an index file used by the script. When EXTERNAL_SEARCH is
1280 # searching and an index file used by the script. When EXTERNAL_SEARCH is
1281 # enabled the indexing and searching needs to be provided by external tools.
1281 # enabled the indexing and searching needs to be provided by external tools.
1282 # See the manual for details.
1282 # See the manual for details.
1283
1283
1284 SERVER_BASED_SEARCH = NO
1284 SERVER_BASED_SEARCH = NO
1285
1285
1286 # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
1286 # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
1287 # script for searching. Instead the search results are written to an XML file
1287 # script for searching. Instead the search results are written to an XML file
1288 # which needs to be processed by an external indexer. Doxygen will invoke an
1288 # which needs to be processed by an external indexer. Doxygen will invoke an
1289 # external search engine pointed to by the SEARCHENGINE_URL option to obtain
1289 # external search engine pointed to by the SEARCHENGINE_URL option to obtain
1290 # the search results. Doxygen ships with an example indexer (doxyindexer) and
1290 # the search results. Doxygen ships with an example indexer (doxyindexer) and
1291 # search engine (doxysearch.cgi) which are based on the open source search engine
1291 # search engine (doxysearch.cgi) which are based on the open source search engine
1292 # library Xapian. See the manual for configuration details.
1292 # library Xapian. See the manual for configuration details.
1293
1293
1294 EXTERNAL_SEARCH = NO
1294 EXTERNAL_SEARCH = NO
1295
1295
1296 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
1296 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
1297 # which will returned the search results when EXTERNAL_SEARCH is enabled.
1297 # which will returned the search results when EXTERNAL_SEARCH is enabled.
1298 # Doxygen ships with an example search engine (doxysearch) which is based on
1298 # Doxygen ships with an example search engine (doxysearch) which is based on
1299 # the open source search engine library Xapian. See the manual for configuration
1299 # the open source search engine library Xapian. See the manual for configuration
1300 # details.
1300 # details.
1301
1301
1302 SEARCHENGINE_URL =
1302 SEARCHENGINE_URL =
1303
1303
1304 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1304 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1305 # search data is written to a file for indexing by an external tool. With the
1305 # search data is written to a file for indexing by an external tool. With the
1306 # SEARCHDATA_FILE tag the name of this file can be specified.
1306 # SEARCHDATA_FILE tag the name of this file can be specified.
1307
1307
1308 SEARCHDATA_FILE = searchdata.xml
1308 SEARCHDATA_FILE = searchdata.xml
1309
1309
1310 # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
1310 # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
1311 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1311 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1312 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1312 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1313 # projects and redirect the results back to the right project.
1313 # projects and redirect the results back to the right project.
1314
1314
1315 EXTERNAL_SEARCH_ID =
1315 EXTERNAL_SEARCH_ID =
1316
1316
1317 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1317 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1318 # projects other than the one defined by this configuration file, but that are
1318 # projects other than the one defined by this configuration file, but that are
1319 # all added to the same external search index. Each project needs to have a
1319 # all added to the same external search index. Each project needs to have a
1320 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
1320 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
1321 # of to a relative location where the documentation can be found.
1321 # of to a relative location where the documentation can be found.
1322 # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
1322 # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
1323
1323
1324 EXTRA_SEARCH_MAPPINGS =
1324 EXTRA_SEARCH_MAPPINGS =
1325
1325
1326 #---------------------------------------------------------------------------
1326 #---------------------------------------------------------------------------
1327 # configuration options related to the LaTeX output
1327 # configuration options related to the LaTeX output
1328 #---------------------------------------------------------------------------
1328 #---------------------------------------------------------------------------
1329
1329
1330 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1330 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1331 # generate Latex output.
1331 # generate Latex output.
1332
1332
1333 GENERATE_LATEX = YES
1333 GENERATE_LATEX = YES
1334
1334
1335 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1335 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1336 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1336 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1337 # put in front of it. If left blank `latex' will be used as the default path.
1337 # put in front of it. If left blank `latex' will be used as the default path.
1338
1338
1339 LATEX_OUTPUT = latex
1339 LATEX_OUTPUT = latex
1340
1340
1341 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1341 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1342 # invoked. If left blank `latex' will be used as the default command name.
1342 # invoked. If left blank `latex' will be used as the default command name.
1343 # Note that when enabling USE_PDFLATEX this option is only used for
1343 # Note that when enabling USE_PDFLATEX this option is only used for
1344 # generating bitmaps for formulas in the HTML output, but not in the
1344 # generating bitmaps for formulas in the HTML output, but not in the
1345 # Makefile that is written to the output directory.
1345 # Makefile that is written to the output directory.
1346
1346
1347 LATEX_CMD_NAME = latex
1347 LATEX_CMD_NAME = latex
1348
1348
1349 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1349 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1350 # generate index for LaTeX. If left blank `makeindex' will be used as the
1350 # generate index for LaTeX. If left blank `makeindex' will be used as the
1351 # default command name.
1351 # default command name.
1352
1352
1353 MAKEINDEX_CMD_NAME = makeindex
1353 MAKEINDEX_CMD_NAME = makeindex
1354
1354
1355 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1355 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1356 # LaTeX documents. This may be useful for small projects and may help to
1356 # LaTeX documents. This may be useful for small projects and may help to
1357 # save some trees in general.
1357 # save some trees in general.
1358
1358
1359 COMPACT_LATEX = NO
1359 COMPACT_LATEX = NO
1360
1360
1361 # The PAPER_TYPE tag can be used to set the paper type that is used
1361 # The PAPER_TYPE tag can be used to set the paper type that is used
1362 # by the printer. Possible values are: a4, letter, legal and
1362 # by the printer. Possible values are: a4, letter, legal and
1363 # executive. If left blank a4wide will be used.
1363 # executive. If left blank a4wide will be used.
1364
1364
1365 PAPER_TYPE = a4
1365 PAPER_TYPE = a4
1366
1366
1367 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1367 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1368 # packages that should be included in the LaTeX output.
1368 # packages that should be included in the LaTeX output.
1369
1369
1370 EXTRA_PACKAGES =
1370 EXTRA_PACKAGES =
1371
1371
1372 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1372 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1373 # the generated latex document. The header should contain everything until
1373 # the generated latex document. The header should contain everything until
1374 # the first chapter. If it is left blank doxygen will generate a
1374 # the first chapter. If it is left blank doxygen will generate a
1375 # standard header. Notice: only use this tag if you know what you are doing!
1375 # standard header. Notice: only use this tag if you know what you are doing!
1376
1376
1377 LATEX_HEADER =
1377 LATEX_HEADER =
1378
1378
1379 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1379 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1380 # the generated latex document. The footer should contain everything after
1380 # the generated latex document. The footer should contain everything after
1381 # the last chapter. If it is left blank doxygen will generate a
1381 # the last chapter. If it is left blank doxygen will generate a
1382 # standard footer. Notice: only use this tag if you know what you are doing!
1382 # standard footer. Notice: only use this tag if you know what you are doing!
1383
1383
1384 LATEX_FOOTER =
1384 LATEX_FOOTER =
1385
1385
1386 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1386 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1387 # is prepared for conversion to pdf (using ps2pdf). The pdf file will
1387 # is prepared for conversion to pdf (using ps2pdf). The pdf file will
1388 # contain links (just like the HTML output) instead of page references
1388 # contain links (just like the HTML output) instead of page references
1389 # This makes the output suitable for online browsing using a pdf viewer.
1389 # This makes the output suitable for online browsing using a pdf viewer.
1390
1390
1391 PDF_HYPERLINKS = YES
1391 PDF_HYPERLINKS = YES
1392
1392
1393 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1393 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1394 # plain latex in the generated Makefile. Set this option to YES to get a
1394 # plain latex in the generated Makefile. Set this option to YES to get a
1395 # higher quality PDF documentation.
1395 # higher quality PDF documentation.
1396
1396
1397 USE_PDFLATEX = YES
1397 USE_PDFLATEX = YES
1398
1398
1399 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1399 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1400 # command to the generated LaTeX files. This will instruct LaTeX to keep
1400 # command to the generated LaTeX files. This will instruct LaTeX to keep
1401 # running if errors occur, instead of asking the user for help.
1401 # running if errors occur, instead of asking the user for help.
1402 # This option is also used when generating formulas in HTML.
1402 # This option is also used when generating formulas in HTML.
1403
1403
1404 LATEX_BATCHMODE = NO
1404 LATEX_BATCHMODE = NO
1405
1405
1406 # If LATEX_HIDE_INDICES is set to YES then doxygen will not
1406 # If LATEX_HIDE_INDICES is set to YES then doxygen will not
1407 # include the index chapters (such as File Index, Compound Index, etc.)
1407 # include the index chapters (such as File Index, Compound Index, etc.)
1408 # in the output.
1408 # in the output.
1409
1409
1410 LATEX_HIDE_INDICES = NO
1410 LATEX_HIDE_INDICES = NO
1411
1411
1412 # If LATEX_SOURCE_CODE is set to YES then doxygen will include
1412 # If LATEX_SOURCE_CODE is set to YES then doxygen will include
1413 # source code with syntax highlighting in the LaTeX output.
1413 # source code with syntax highlighting in the LaTeX output.
1414 # Note that which sources are shown also depends on other settings
1414 # Note that which sources are shown also depends on other settings
1415 # such as SOURCE_BROWSER.
1415 # such as SOURCE_BROWSER.
1416
1416
1417 LATEX_SOURCE_CODE = NO
1417 LATEX_SOURCE_CODE = NO
1418
1418
1419 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1419 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1420 # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1420 # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1421 # http://en.wikipedia.org/wiki/BibTeX for more info.
1421 # http://en.wikipedia.org/wiki/BibTeX for more info.
1422
1422
1423 LATEX_BIB_STYLE = plain
1423 LATEX_BIB_STYLE = plain
1424
1424
1425 #---------------------------------------------------------------------------
1425 #---------------------------------------------------------------------------
1426 # configuration options related to the RTF output
1426 # configuration options related to the RTF output
1427 #---------------------------------------------------------------------------
1427 #---------------------------------------------------------------------------
1428
1428
1429 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1429 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1430 # The RTF output is optimized for Word 97 and may not look very pretty with
1430 # The RTF output is optimized for Word 97 and may not look very pretty with
1431 # other RTF readers or editors.
1431 # other RTF readers or editors.
1432
1432
1433 GENERATE_RTF = NO
1433 GENERATE_RTF = NO
1434
1434
1435 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1435 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1436 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1436 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1437 # put in front of it. If left blank `rtf' will be used as the default path.
1437 # put in front of it. If left blank `rtf' will be used as the default path.
1438
1438
1439 RTF_OUTPUT = rtf
1439 RTF_OUTPUT = rtf
1440
1440
1441 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1441 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1442 # RTF documents. This may be useful for small projects and may help to
1442 # RTF documents. This may be useful for small projects and may help to
1443 # save some trees in general.
1443 # save some trees in general.
1444
1444
1445 COMPACT_RTF = NO
1445 COMPACT_RTF = NO
1446
1446
1447 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1447 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1448 # will contain hyperlink fields. The RTF file will
1448 # will contain hyperlink fields. The RTF file will
1449 # contain links (just like the HTML output) instead of page references.
1449 # contain links (just like the HTML output) instead of page references.
1450 # This makes the output suitable for online browsing using WORD or other
1450 # This makes the output suitable for online browsing using WORD or other
1451 # programs which support those fields.
1451 # programs which support those fields.
1452 # Note: wordpad (write) and others do not support links.
1452 # Note: wordpad (write) and others do not support links.
1453
1453
1454 RTF_HYPERLINKS = NO
1454 RTF_HYPERLINKS = NO
1455
1455
1456 # Load style sheet definitions from file. Syntax is similar to doxygen's
1456 # Load style sheet definitions from file. Syntax is similar to doxygen's
1457 # config file, i.e. a series of assignments. You only have to provide
1457 # config file, i.e. a series of assignments. You only have to provide
1458 # replacements, missing definitions are set to their default value.
1458 # replacements, missing definitions are set to their default value.
1459
1459
1460 RTF_STYLESHEET_FILE =
1460 RTF_STYLESHEET_FILE =
1461
1461
1462 # Set optional variables used in the generation of an rtf document.
1462 # Set optional variables used in the generation of an rtf document.
1463 # Syntax is similar to doxygen's config file.
1463 # Syntax is similar to doxygen's config file.
1464
1464
1465 RTF_EXTENSIONS_FILE =
1465 RTF_EXTENSIONS_FILE =
1466
1466
1467 #---------------------------------------------------------------------------
1467 #---------------------------------------------------------------------------
1468 # configuration options related to the man page output
1468 # configuration options related to the man page output
1469 #---------------------------------------------------------------------------
1469 #---------------------------------------------------------------------------
1470
1470
1471 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1471 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1472 # generate man pages
1472 # generate man pages
1473
1473
1474 GENERATE_MAN = NO
1474 GENERATE_MAN = NO
1475
1475
1476 # The MAN_OUTPUT tag is used to specify where the man pages will be put.
1476 # The MAN_OUTPUT tag is used to specify where the man pages will be put.
1477 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1477 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1478 # put in front of it. If left blank `man' will be used as the default path.
1478 # put in front of it. If left blank `man' will be used as the default path.
1479
1479
1480 MAN_OUTPUT = man
1480 MAN_OUTPUT = man
1481
1481
1482 # The MAN_EXTENSION tag determines the extension that is added to
1482 # The MAN_EXTENSION tag determines the extension that is added to
1483 # the generated man pages (default is the subroutine's section .3)
1483 # the generated man pages (default is the subroutine's section .3)
1484
1484
1485 MAN_EXTENSION = .3
1485 MAN_EXTENSION = .3
1486
1486
1487 # If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1487 # If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1488 # then it will generate one additional man file for each entity
1488 # then it will generate one additional man file for each entity
1489 # documented in the real man page(s). These additional files
1489 # documented in the real man page(s). These additional files
1490 # only source the real man page, but without them the man command
1490 # only source the real man page, but without them the man command
1491 # would be unable to find the correct page. The default is NO.
1491 # would be unable to find the correct page. The default is NO.
1492
1492
1493 MAN_LINKS = NO
1493 MAN_LINKS = NO
1494
1494
1495 #---------------------------------------------------------------------------
1495 #---------------------------------------------------------------------------
1496 # configuration options related to the XML output
1496 # configuration options related to the XML output
1497 #---------------------------------------------------------------------------
1497 #---------------------------------------------------------------------------
1498
1498
1499 # If the GENERATE_XML tag is set to YES Doxygen will
1499 # If the GENERATE_XML tag is set to YES Doxygen will
1500 # generate an XML file that captures the structure of
1500 # generate an XML file that captures the structure of
1501 # the code including all documentation.
1501 # the code including all documentation.
1502
1502
1503 GENERATE_XML = NO
1503 GENERATE_XML = NO
1504
1504
1505 # The XML_OUTPUT tag is used to specify where the XML pages will be put.
1505 # The XML_OUTPUT tag is used to specify where the XML pages will be put.
1506 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1506 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1507 # put in front of it. If left blank `xml' will be used as the default path.
1507 # put in front of it. If left blank `xml' will be used as the default path.
1508
1508
1509 XML_OUTPUT = xml
1509 XML_OUTPUT = xml
1510
1510
1511 # The XML_SCHEMA tag can be used to specify an XML schema,
1511 # The XML_SCHEMA tag can be used to specify an XML schema,
1512 # which can be used by a validating XML parser to check the
1512 # which can be used by a validating XML parser to check the
1513 # syntax of the XML files.
1513 # syntax of the XML files.
1514
1514
1515 XML_SCHEMA =
1515 XML_SCHEMA =
1516
1516
1517 # The XML_DTD tag can be used to specify an XML DTD,
1517 # The XML_DTD tag can be used to specify an XML DTD,
1518 # which can be used by a validating XML parser to check the
1518 # which can be used by a validating XML parser to check the
1519 # syntax of the XML files.
1519 # syntax of the XML files.
1520
1520
1521 XML_DTD =
1521 XML_DTD =
1522
1522
1523 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1523 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1524 # dump the program listings (including syntax highlighting
1524 # dump the program listings (including syntax highlighting
1525 # and cross-referencing information) to the XML output. Note that
1525 # and cross-referencing information) to the XML output. Note that
1526 # enabling this will significantly increase the size of the XML output.
1526 # enabling this will significantly increase the size of the XML output.
1527
1527
1528 XML_PROGRAMLISTING = YES
1528 XML_PROGRAMLISTING = YES
1529
1529
1530 #---------------------------------------------------------------------------
1530 #---------------------------------------------------------------------------
1531 # configuration options for the AutoGen Definitions output
1531 # configuration options for the AutoGen Definitions output
1532 #---------------------------------------------------------------------------
1532 #---------------------------------------------------------------------------
1533
1533
1534 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1534 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1535 # generate an AutoGen Definitions (see autogen.sf.net) file
1535 # generate an AutoGen Definitions (see autogen.sf.net) file
1536 # that captures the structure of the code including all
1536 # that captures the structure of the code including all
1537 # documentation. Note that this feature is still experimental
1537 # documentation. Note that this feature is still experimental
1538 # and incomplete at the moment.
1538 # and incomplete at the moment.
1539
1539
1540 GENERATE_AUTOGEN_DEF = NO
1540 GENERATE_AUTOGEN_DEF = NO
1541
1541
1542 #---------------------------------------------------------------------------
1542 #---------------------------------------------------------------------------
1543 # configuration options related to the Perl module output
1543 # configuration options related to the Perl module output
1544 #---------------------------------------------------------------------------
1544 #---------------------------------------------------------------------------
1545
1545
1546 # If the GENERATE_PERLMOD tag is set to YES Doxygen will
1546 # If the GENERATE_PERLMOD tag is set to YES Doxygen will
1547 # generate a Perl module file that captures the structure of
1547 # generate a Perl module file that captures the structure of
1548 # the code including all documentation. Note that this
1548 # the code including all documentation. Note that this
1549 # feature is still experimental and incomplete at the
1549 # feature is still experimental and incomplete at the
1550 # moment.
1550 # moment.
1551
1551
1552 GENERATE_PERLMOD = NO
1552 GENERATE_PERLMOD = NO
1553
1553
1554 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1554 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1555 # the necessary Makefile rules, Perl scripts and LaTeX code to be able
1555 # the necessary Makefile rules, Perl scripts and LaTeX code to be able
1556 # to generate PDF and DVI output from the Perl module output.
1556 # to generate PDF and DVI output from the Perl module output.
1557
1557
1558 PERLMOD_LATEX = NO
1558 PERLMOD_LATEX = NO
1559
1559
1560 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1560 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1561 # nicely formatted so it can be parsed by a human reader. This is useful
1561 # nicely formatted so it can be parsed by a human reader. This is useful
1562 # if you want to understand what is going on. On the other hand, if this
1562 # if you want to understand what is going on. On the other hand, if this
1563 # tag is set to NO the size of the Perl module output will be much smaller
1563 # tag is set to NO the size of the Perl module output will be much smaller
1564 # and Perl will parse it just the same.
1564 # and Perl will parse it just the same.
1565
1565
1566 PERLMOD_PRETTY = YES
1566 PERLMOD_PRETTY = YES
1567
1567
1568 # The names of the make variables in the generated doxyrules.make file
1568 # The names of the make variables in the generated doxyrules.make file
1569 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1569 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1570 # This is useful so different doxyrules.make files included by the same
1570 # This is useful so different doxyrules.make files included by the same
1571 # Makefile don't overwrite each other's variables.
1571 # Makefile don't overwrite each other's variables.
1572
1572
1573 PERLMOD_MAKEVAR_PREFIX =
1573 PERLMOD_MAKEVAR_PREFIX =
1574
1574
1575 #---------------------------------------------------------------------------
1575 #---------------------------------------------------------------------------
1576 # Configuration options related to the preprocessor
1576 # Configuration options related to the preprocessor
1577 #---------------------------------------------------------------------------
1577 #---------------------------------------------------------------------------
1578
1578
1579 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1579 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1580 # evaluate all C-preprocessor directives found in the sources and include
1580 # evaluate all C-preprocessor directives found in the sources and include
1581 # files.
1581 # files.
1582
1582
1583 ENABLE_PREPROCESSING = YES
1583 ENABLE_PREPROCESSING = YES
1584
1584
1585 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1585 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1586 # names in the source code. If set to NO (the default) only conditional
1586 # names in the source code. If set to NO (the default) only conditional
1587 # compilation will be performed. Macro expansion can be done in a controlled
1587 # compilation will be performed. Macro expansion can be done in a controlled
1588 # way by setting EXPAND_ONLY_PREDEF to YES.
1588 # way by setting EXPAND_ONLY_PREDEF to YES.
1589
1589
1590 MACRO_EXPANSION = NO
1590 MACRO_EXPANSION = NO
1591
1591
1592 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1592 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1593 # then the macro expansion is limited to the macros specified with the
1593 # then the macro expansion is limited to the macros specified with the
1594 # PREDEFINED and EXPAND_AS_DEFINED tags.
1594 # PREDEFINED and EXPAND_AS_DEFINED tags.
1595
1595
1596 EXPAND_ONLY_PREDEF = NO
1596 EXPAND_ONLY_PREDEF = NO
1597
1597
1598 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1598 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1599 # pointed to by INCLUDE_PATH will be searched when a #include is found.
1599 # pointed to by INCLUDE_PATH will be searched when a #include is found.
1600
1600
1601 SEARCH_INCLUDES = YES
1601 SEARCH_INCLUDES = YES
1602
1602
1603 # The INCLUDE_PATH tag can be used to specify one or more directories that
1603 # The INCLUDE_PATH tag can be used to specify one or more directories that
1604 # contain include files that are not input files but should be processed by
1604 # contain include files that are not input files but should be processed by
1605 # the preprocessor.
1605 # the preprocessor.
1606
1606
1607 INCLUDE_PATH =
1607 INCLUDE_PATH =
1608
1608
1609 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1609 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1610 # patterns (like *.h and *.hpp) to filter out the header-files in the
1610 # patterns (like *.h and *.hpp) to filter out the header-files in the
1611 # directories. If left blank, the patterns specified with FILE_PATTERNS will
1611 # directories. If left blank, the patterns specified with FILE_PATTERNS will
1612 # be used.
1612 # be used.
1613
1613
1614 INCLUDE_FILE_PATTERNS =
1614 INCLUDE_FILE_PATTERNS =
1615
1615
1616 # The PREDEFINED tag can be used to specify one or more macro names that
1616 # The PREDEFINED tag can be used to specify one or more macro names that
1617 # are defined before the preprocessor is started (similar to the -D option of
1617 # are defined before the preprocessor is started (similar to the -D option of
1618 # gcc). The argument of the tag is a list of macros of the form: name
1618 # gcc). The argument of the tag is a list of macros of the form: name
1619 # or name=definition (no spaces). If the definition and the = are
1619 # or name=definition (no spaces). If the definition and the = are
1620 # omitted =1 is assumed. To prevent a macro definition from being
1620 # omitted =1 is assumed. To prevent a macro definition from being
1621 # undefined via #undef or recursively expanded use the := operator
1621 # undefined via #undef or recursively expanded use the := operator
1622 # instead of the = operator.
1622 # instead of the = operator.
1623
1623
1624 PREDEFINED =
1624 PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
1625
1625
1626 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1626 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1627 # this tag can be used to specify a list of macro names that should be expanded.
1627 # this tag can be used to specify a list of macro names that should be expanded.
1628 # The macro definition that is found in the sources will be used.
1628 # The macro definition that is found in the sources will be used.
1629 # Use the PREDEFINED tag if you want to use a different macro definition that
1629 # Use the PREDEFINED tag if you want to use a different macro definition that
1630 # overrules the definition found in the source code.
1630 # overrules the definition found in the source code.
1631
1631
1632 EXPAND_AS_DEFINED =
1632 EXPAND_AS_DEFINED =
1633
1633
1634 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1634 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1635 # doxygen's preprocessor will remove all references to function-like macros
1635 # doxygen's preprocessor will remove all references to function-like macros
1636 # that are alone on a line, have an all uppercase name, and do not end with a
1636 # that are alone on a line, have an all uppercase name, and do not end with a
1637 # semicolon, because these will confuse the parser if not removed.
1637 # semicolon, because these will confuse the parser if not removed.
1638
1638
1639 SKIP_FUNCTION_MACROS = YES
1639 SKIP_FUNCTION_MACROS = YES
1640
1640
1641 #---------------------------------------------------------------------------
1641 #---------------------------------------------------------------------------
1642 # Configuration::additions related to external references
1642 # Configuration::additions related to external references
1643 #---------------------------------------------------------------------------
1643 #---------------------------------------------------------------------------
1644
1644
1645 # The TAGFILES option can be used to specify one or more tagfiles. For each
1645 # The TAGFILES option can be used to specify one or more tagfiles. For each
1646 # tag file the location of the external documentation should be added. The
1646 # tag file the location of the external documentation should be added. The
1647 # format of a tag file without this location is as follows:
1647 # format of a tag file without this location is as follows:
1648 # TAGFILES = file1 file2 ...
1648 # TAGFILES = file1 file2 ...
1649 # Adding location for the tag files is done as follows:
1649 # Adding location for the tag files is done as follows:
1650 # TAGFILES = file1=loc1 "file2 = loc2" ...
1650 # TAGFILES = file1=loc1 "file2 = loc2" ...
1651 # where "loc1" and "loc2" can be relative or absolute paths
1651 # where "loc1" and "loc2" can be relative or absolute paths
1652 # or URLs. Note that each tag file must have a unique name (where the name does
1652 # or URLs. Note that each tag file must have a unique name (where the name does
1653 # NOT include the path). If a tag file is not located in the directory in which
1653 # NOT include the path). If a tag file is not located in the directory in which
1654 # doxygen is run, you must also specify the path to the tagfile here.
1654 # doxygen is run, you must also specify the path to the tagfile here.
1655
1655
1656 TAGFILES =
1656 TAGFILES =
1657
1657
1658 # When a file name is specified after GENERATE_TAGFILE, doxygen will create
1658 # When a file name is specified after GENERATE_TAGFILE, doxygen will create
1659 # a tag file that is based on the input files it reads.
1659 # a tag file that is based on the input files it reads.
1660
1660
1661 GENERATE_TAGFILE =
1661 GENERATE_TAGFILE =
1662
1662
1663 # If the ALLEXTERNALS tag is set to YES all external classes will be listed
1663 # If the ALLEXTERNALS tag is set to YES all external classes will be listed
1664 # in the class index. If set to NO only the inherited external classes
1664 # in the class index. If set to NO only the inherited external classes
1665 # will be listed.
1665 # will be listed.
1666
1666
1667 ALLEXTERNALS = NO
1667 ALLEXTERNALS = NO
1668
1668
1669 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1669 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1670 # in the modules index. If set to NO, only the current project's groups will
1670 # in the modules index. If set to NO, only the current project's groups will
1671 # be listed.
1671 # be listed.
1672
1672
1673 EXTERNAL_GROUPS = YES
1673 EXTERNAL_GROUPS = YES
1674
1674
1675 # The PERL_PATH should be the absolute path and name of the perl script
1675 # The PERL_PATH should be the absolute path and name of the perl script
1676 # interpreter (i.e. the result of `which perl').
1676 # interpreter (i.e. the result of `which perl').
1677
1677
1678 PERL_PATH = /usr/bin/perl
1678 PERL_PATH = /usr/bin/perl
1679
1679
1680 #---------------------------------------------------------------------------
1680 #---------------------------------------------------------------------------
1681 # Configuration options related to the dot tool
1681 # Configuration options related to the dot tool
1682 #---------------------------------------------------------------------------
1682 #---------------------------------------------------------------------------
1683
1683
1684 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1684 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1685 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1685 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1686 # or super classes. Setting the tag to NO turns the diagrams off. Note that
1686 # or super classes. Setting the tag to NO turns the diagrams off. Note that
1687 # this option also works with HAVE_DOT disabled, but it is recommended to
1687 # this option also works with HAVE_DOT disabled, but it is recommended to
1688 # install and use dot, since it yields more powerful graphs.
1688 # install and use dot, since it yields more powerful graphs.
1689
1689
1690 CLASS_DIAGRAMS = YES
1690 CLASS_DIAGRAMS = NO
1691
1691
1692 # You can define message sequence charts within doxygen comments using the \msc
1692 # You can define message sequence charts within doxygen comments using the \msc
1693 # command. Doxygen will then run the mscgen tool (see
1693 # command. Doxygen will then run the mscgen tool (see
1694 # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1694 # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1695 # documentation. The MSCGEN_PATH tag allows you to specify the directory where
1695 # documentation. The MSCGEN_PATH tag allows you to specify the directory where
1696 # the mscgen tool resides. If left empty the tool is assumed to be found in the
1696 # the mscgen tool resides. If left empty the tool is assumed to be found in the
1697 # default search path.
1697 # default search path.
1698
1698
1699 MSCGEN_PATH =
1699 MSCGEN_PATH =
1700
1700
1701 # If set to YES, the inheritance and collaboration graphs will hide
1701 # If set to YES, the inheritance and collaboration graphs will hide
1702 # inheritance and usage relations if the target is undocumented
1702 # inheritance and usage relations if the target is undocumented
1703 # or is not a class.
1703 # or is not a class.
1704
1704
1705 HIDE_UNDOC_RELATIONS = YES
1705 HIDE_UNDOC_RELATIONS = YES
1706
1706
1707 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1707 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1708 # available from the path. This tool is part of Graphviz, a graph visualization
1708 # available from the path. This tool is part of Graphviz, a graph visualization
1709 # toolkit from AT&T and Lucent Bell Labs. The other options in this section
1709 # toolkit from AT&T and Lucent Bell Labs. The other options in this section
1710 # have no effect if this option is set to NO (the default)
1710 # have no effect if this option is set to NO (the default)
1711
1711
1712 HAVE_DOT = NO
1712 HAVE_DOT = YES
1713
1713
1714 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
1714 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
1715 # allowed to run in parallel. When set to 0 (the default) doxygen will
1715 # allowed to run in parallel. When set to 0 (the default) doxygen will
1716 # base this on the number of processors available in the system. You can set it
1716 # base this on the number of processors available in the system. You can set it
1717 # explicitly to a value larger than 0 to get control over the balance
1717 # explicitly to a value larger than 0 to get control over the balance
1718 # between CPU load and processing speed.
1718 # between CPU load and processing speed.
1719
1719
1720 DOT_NUM_THREADS = 0
1720 DOT_NUM_THREADS = 4
1721
1721
1722 # By default doxygen will use the Helvetica font for all dot files that
1722 # By default doxygen will use the Helvetica font for all dot files that
1723 # doxygen generates. When you want a differently looking font you can specify
1723 # doxygen generates. When you want a differently looking font you can specify
1724 # the font name using DOT_FONTNAME. You need to make sure dot is able to find
1724 # the font name using DOT_FONTNAME. You need to make sure dot is able to find
1725 # the font, which can be done by putting it in a standard location or by setting
1725 # the font, which can be done by putting it in a standard location or by setting
1726 # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
1726 # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
1727 # directory containing the font.
1727 # directory containing the font.
1728
1728
1729 DOT_FONTNAME = Helvetica
1729 DOT_FONTNAME = Helvetica
1730
1730
1731 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1731 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1732 # The default size is 10pt.
1732 # The default size is 10pt.
1733
1733
1734 DOT_FONTSIZE = 10
1734 DOT_FONTSIZE = 10
1735
1735
1736 # By default doxygen will tell dot to use the Helvetica font.
1736 # By default doxygen will tell dot to use the Helvetica font.
1737 # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
1737 # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
1738 # set the path where dot can find it.
1738 # set the path where dot can find it.
1739
1739
1740 DOT_FONTPATH =
1740 DOT_FONTPATH =
1741
1741
1742 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1742 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1743 # will generate a graph for each documented class showing the direct and
1743 # will generate a graph for each documented class showing the direct and
1744 # indirect inheritance relations. Setting this tag to YES will force the
1744 # indirect inheritance relations. Setting this tag to YES will force the
1745 # CLASS_DIAGRAMS tag to NO.
1745 # CLASS_DIAGRAMS tag to NO.
1746
1746
1747 CLASS_GRAPH = YES
1747 CLASS_GRAPH = YES
1748
1748
1749 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1749 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1750 # will generate a graph for each documented class showing the direct and
1750 # will generate a graph for each documented class showing the direct and
1751 # indirect implementation dependencies (inheritance, containment, and
1751 # indirect implementation dependencies (inheritance, containment, and
1752 # class references variables) of the class with other documented classes.
1752 # class references variables) of the class with other documented classes.
1753
1753
1754 COLLABORATION_GRAPH = YES
1754 COLLABORATION_GRAPH = YES
1755
1755
1756 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1756 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1757 # will generate a graph for groups, showing the direct groups dependencies
1757 # will generate a graph for groups, showing the direct groups dependencies
1758
1758
1759 GROUP_GRAPHS = YES
1759 GROUP_GRAPHS = YES
1760
1760
1761 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1761 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1762 # collaboration diagrams in a style similar to the OMG's Unified Modeling
1762 # collaboration diagrams in a style similar to the OMG's Unified Modeling
1763 # Language.
1763 # Language.
1764
1764
1765 UML_LOOK = NO
1765 UML_LOOK = NO
1766
1766
1767 # If the UML_LOOK tag is enabled, the fields and methods are shown inside
1767 # If the UML_LOOK tag is enabled, the fields and methods are shown inside
1768 # the class node. If there are many fields or methods and many nodes the
1768 # the class node. If there are many fields or methods and many nodes the
1769 # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
1769 # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
1770 # threshold limits the number of items for each type to make the size more
1770 # threshold limits the number of items for each type to make the size more
1771 # managable. Set this to 0 for no limit. Note that the threshold may be
1771 # managable. Set this to 0 for no limit. Note that the threshold may be
1772 # exceeded by 50% before the limit is enforced.
1772 # exceeded by 50% before the limit is enforced.
1773
1773
1774 UML_LIMIT_NUM_FIELDS = 10
1774 UML_LIMIT_NUM_FIELDS = 10
1775
1775
1776 # If set to YES, the inheritance and collaboration graphs will show the
1776 # If set to YES, the inheritance and collaboration graphs will show the
1777 # relations between templates and their instances.
1777 # relations between templates and their instances.
1778
1778
1779 TEMPLATE_RELATIONS = NO
1779 TEMPLATE_RELATIONS = NO
1780
1780
1781 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1781 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1782 # tags are set to YES then doxygen will generate a graph for each documented
1782 # tags are set to YES then doxygen will generate a graph for each documented
1783 # file showing the direct and indirect include dependencies of the file with
1783 # file showing the direct and indirect include dependencies of the file with
1784 # other documented files.
1784 # other documented files.
1785
1785
1786 INCLUDE_GRAPH = YES
1786 INCLUDE_GRAPH = YES
1787
1787
1788 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1788 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1789 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1789 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1790 # documented header file showing the documented files that directly or
1790 # documented header file showing the documented files that directly or
1791 # indirectly include this file.
1791 # indirectly include this file.
1792
1792
1793 INCLUDED_BY_GRAPH = YES
1793 INCLUDED_BY_GRAPH = YES
1794
1794
1795 # If the CALL_GRAPH and HAVE_DOT options are set to YES then
1795 # If the CALL_GRAPH and HAVE_DOT options are set to YES then
1796 # doxygen will generate a call dependency graph for every global function
1796 # doxygen will generate a call dependency graph for every global function
1797 # or class method. Note that enabling this option will significantly increase
1797 # or class method. Note that enabling this option will significantly increase
1798 # the time of a run. So in most cases it will be better to enable call graphs
1798 # the time of a run. So in most cases it will be better to enable call graphs
1799 # for selected functions only using the \callgraph command.
1799 # for selected functions only using the \callgraph command.
1800
1800
1801 CALL_GRAPH = NO
1801 CALL_GRAPH = YES
1802
1802
1803 # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1803 # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1804 # doxygen will generate a caller dependency graph for every global function
1804 # doxygen will generate a caller dependency graph for every global function
1805 # or class method. Note that enabling this option will significantly increase
1805 # or class method. Note that enabling this option will significantly increase
1806 # the time of a run. So in most cases it will be better to enable caller
1806 # the time of a run. So in most cases it will be better to enable caller
1807 # graphs for selected functions only using the \callergraph command.
1807 # graphs for selected functions only using the \callergraph command.
1808
1808
1809 CALLER_GRAPH = NO
1809 CALLER_GRAPH = YES
1810
1810
1811 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1811 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1812 # will generate a graphical hierarchy of all classes instead of a textual one.
1812 # will generate a graphical hierarchy of all classes instead of a textual one.
1813
1813
1814 GRAPHICAL_HIERARCHY = YES
1814 GRAPHICAL_HIERARCHY = YES
1815
1815
1816 # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
1816 # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
1817 # then doxygen will show the dependencies a directory has on other directories
1817 # then doxygen will show the dependencies a directory has on other directories
1818 # in a graphical way. The dependency relations are determined by the #include
1818 # in a graphical way. The dependency relations are determined by the #include
1819 # relations between the files in the directories.
1819 # relations between the files in the directories.
1820
1820
1821 DIRECTORY_GRAPH = YES
1821 DIRECTORY_GRAPH = YES
1822
1822
1823 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1823 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1824 # generated by dot. Possible values are svg, png, jpg, or gif.
1824 # generated by dot. Possible values are svg, png, jpg, or gif.
1825 # If left blank png will be used. If you choose svg you need to set
1825 # If left blank png will be used. If you choose svg you need to set
1826 # HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1826 # HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1827 # visible in IE 9+ (other browsers do not have this requirement).
1827 # visible in IE 9+ (other browsers do not have this requirement).
1828
1828
1829 DOT_IMAGE_FORMAT = png
1829 DOT_IMAGE_FORMAT = png
1830
1830
1831 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
1831 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
1832 # enable generation of interactive SVG images that allow zooming and panning.
1832 # enable generation of interactive SVG images that allow zooming and panning.
1833 # Note that this requires a modern browser other than Internet Explorer.
1833 # Note that this requires a modern browser other than Internet Explorer.
1834 # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
1834 # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
1835 # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1835 # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1836 # visible. Older versions of IE do not have SVG support.
1836 # visible. Older versions of IE do not have SVG support.
1837
1837
1838 INTERACTIVE_SVG = NO
1838 INTERACTIVE_SVG = YES
1839
1839
1840 # The tag DOT_PATH can be used to specify the path where the dot tool can be
1840 # The tag DOT_PATH can be used to specify the path where the dot tool can be
1841 # found. If left blank, it is assumed the dot tool can be found in the path.
1841 # found. If left blank, it is assumed the dot tool can be found in the path.
1842
1842
1843 DOT_PATH =
1843 DOT_PATH =
1844
1844
1845 # The DOTFILE_DIRS tag can be used to specify one or more directories that
1845 # The DOTFILE_DIRS tag can be used to specify one or more directories that
1846 # contain dot files that are included in the documentation (see the
1846 # contain dot files that are included in the documentation (see the
1847 # \dotfile command).
1847 # \dotfile command).
1848
1848
1849 DOTFILE_DIRS =
1849 DOTFILE_DIRS =
1850
1850
1851 # The MSCFILE_DIRS tag can be used to specify one or more directories that
1851 # The MSCFILE_DIRS tag can be used to specify one or more directories that
1852 # contain msc files that are included in the documentation (see the
1852 # contain msc files that are included in the documentation (see the
1853 # \mscfile command).
1853 # \mscfile command).
1854
1854
1855 MSCFILE_DIRS =
1855 MSCFILE_DIRS =
1856
1856
1857 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1857 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1858 # nodes that will be shown in the graph. If the number of nodes in a graph
1858 # nodes that will be shown in the graph. If the number of nodes in a graph
1859 # becomes larger than this value, doxygen will truncate the graph, which is
1859 # becomes larger than this value, doxygen will truncate the graph, which is
1860 # visualized by representing a node as a red box. Note that doxygen if the
1860 # visualized by representing a node as a red box. Note that doxygen if the
1861 # number of direct children of the root node in a graph is already larger than
1861 # number of direct children of the root node in a graph is already larger than
1862 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1862 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1863 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1863 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1864
1864
1865 DOT_GRAPH_MAX_NODES = 50
1865 DOT_GRAPH_MAX_NODES = 50
1866
1866
1867 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1867 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1868 # graphs generated by dot. A depth value of 3 means that only nodes reachable
1868 # graphs generated by dot. A depth value of 3 means that only nodes reachable
1869 # from the root by following a path via at most 3 edges will be shown. Nodes
1869 # from the root by following a path via at most 3 edges will be shown. Nodes
1870 # that lay further from the root node will be omitted. Note that setting this
1870 # that lay further from the root node will be omitted. Note that setting this
1871 # option to 1 or 2 may greatly reduce the computation time needed for large
1871 # option to 1 or 2 may greatly reduce the computation time needed for large
1872 # code bases. Also note that the size of a graph can be further restricted by
1872 # code bases. Also note that the size of a graph can be further restricted by
1873 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1873 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1874
1874
1875 MAX_DOT_GRAPH_DEPTH = 0
1875 MAX_DOT_GRAPH_DEPTH = 0
1876
1876
1877 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1877 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1878 # background. This is disabled by default, because dot on Windows does not
1878 # background. This is disabled by default, because dot on Windows does not
1879 # seem to support this out of the box. Warning: Depending on the platform used,
1879 # seem to support this out of the box. Warning: Depending on the platform used,
1880 # enabling this option may lead to badly anti-aliased labels on the edges of
1880 # enabling this option may lead to badly anti-aliased labels on the edges of
1881 # a graph (i.e. they become hard to read).
1881 # a graph (i.e. they become hard to read).
1882
1882
1883 DOT_TRANSPARENT = NO
1883 DOT_TRANSPARENT = NO
1884
1884
1885 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1885 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1886 # files in one run (i.e. multiple -o and -T options on the command line). This
1886 # files in one run (i.e. multiple -o and -T options on the command line). This
1887 # makes dot run faster, but since only newer versions of dot (>1.8.10)
1887 # makes dot run faster, but since only newer versions of dot (>1.8.10)
1888 # support this, this feature is disabled by default.
1888 # support this, this feature is disabled by default.
1889
1889
1890 DOT_MULTI_TARGETS = NO
1890 DOT_MULTI_TARGETS = NO
1891
1891
1892 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1892 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1893 # generate a legend page explaining the meaning of the various boxes and
1893 # generate a legend page explaining the meaning of the various boxes and
1894 # arrows in the dot generated graphs.
1894 # arrows in the dot generated graphs.
1895
1895
1896 GENERATE_LEGEND = YES
1896 GENERATE_LEGEND = YES
1897
1897
1898 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1898 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1899 # remove the intermediate dot files that are used to generate
1899 # remove the intermediate dot files that are used to generate
1900 # the various graphs.
1900 # the various graphs.
1901
1901
1902 DOT_CLEANUP = YES
1902 DOT_CLEANUP = YES
@@ -1,48 +1,47
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22
22
23 #include <SDL.h>
23 #include <SDL.h>
24 #include <ili9328.h>
24 #include <ili9328.h>
25 #include <stdint.h>
26
25
27 #define LCDILI9328 9328
26 #define LCDILI9328 9328
28
27
29 extern SDL_Surface *screen;
28 extern SDL_Surface *screen;
30 extern SDL_Overlay *bmp;
29 extern SDL_Overlay *bmp;
31
30
32 extern void SDLCD_mkscreen(int resx,int resy,int bbp,int lcdtype);
31 extern void SDLCD_mkscreen(int resx,int resy,int bbp,int lcdtype);
33 extern int SDLCD_init();
32 extern int SDLCD_init();
34 extern void SDLCD_writereg(uint32_t reg,uint32_t data);
33 extern void SDLCD_writereg(uint32_t reg,uint32_t data);
35 extern uint32_t SDLCD_readreg(uint32_t reg);
34 extern uint32_t SDLCD_readreg(uint32_t reg);
36 extern void SDLCD_writeGRAM(void* buffer,uint32_t count);
35 extern void SDLCD_writeGRAM(void* buffer,uint32_t count);
37 extern void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count);
36 extern void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count);
38 extern void SDLCD_readGRAM(void* buffer,uint32_t count);
37 extern void SDLCD_readGRAM(void* buffer,uint32_t count);
39 extern void SDLCD_readGRAM_16bpp(void* buffer,uint32_t count);
38 extern void SDLCD_readGRAM_16bpp(void* buffer,uint32_t count);
40
39
41
40
42
41
43
42
44
43
45
44
46
45
47
46
48
47
@@ -1,58 +1,57
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef GENERICLCD_CONTROLER_H
22 #ifndef GENERICLCD_CONTROLER_H
23 #define GENERICLCD_CONTROLER_H
23 #define GENERICLCD_CONTROLER_H
24
24
25 #include <uhandle.h>
25 #include <uhandle.h>
26 #include <stdint.h>
27 #include <fonts.h>
26 #include <fonts.h>
28
27
29
28
30 typedef struct LCD_IF_t
29 typedef struct LCD_IF_t
31 {
30 {
32 int (*init)();
31 int (*init)();
33 void (*writereg)(uint32_t reg,uint32_t data);
32 void (*writereg)(uint32_t reg,uint32_t data);
34 uint32_t (*readreg)(uint32_t reg);
33 uint32_t (*readreg)(uint32_t reg);
35 void (*writeGRAM)(void* buffer,uint32_t count);
34 void (*writeGRAM)(void* buffer,uint32_t count);
36 void (*readGRAM)(void* buffer,uint32_t count);
35 void (*readGRAM)(void* buffer,uint32_t count);
37 }LCD_IF_t;
36 }LCD_IF_t;
38
37
39 typedef struct LCD_t
38 typedef struct LCD_t
40 {
39 {
41 LCD_IF_t* interface;
40 LCD_IF_t* interface;
42 int (*init)(struct LCD_t* LCD);
41 int (*init)(struct LCD_t* LCD);
43 void (*paint)(struct LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
42 void (*paint)(struct LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
44 void (*paintText)(struct LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
43 void (*paintText)(struct LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
45 void (*paintFilRect)(struct LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
44 void (*paintFilRect)(struct LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
46 void (*getPix)(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
45 void (*getPix)(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
47 void (*refreshenable)(struct LCD_t* LCD,int enable);
46 void (*refreshenable)(struct LCD_t* LCD,int enable);
48 uint16_t width;
47 uint16_t width;
49 uint16_t height;
48 uint16_t height;
50 }LCD_t;
49 }LCD_t;
51
50
52
51
53 #endif /*GENERICLCD_CONTROLER_H*/
52 #endif /*GENERICLCD_CONTROLER_H*/
54
53
55
54
56
55
57
56
58
57
@@ -1,102 +1,99
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef ILI9328_H
22 #ifndef ILI9328_H
23 #define ILI9328_H
23 #define ILI9328_H
24
24
25 #include <uhandle.h>
26 #include <genericLCD_Controler.h>
25 #include <genericLCD_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29
26
30 extern int ili9328init(struct LCD_t* LCD);
27 extern int ili9328init(struct LCD_t* LCD);
31 extern void ili9328setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
28 extern void ili9328setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
32 extern void ili9328setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
29 extern void ili9328setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
33 extern void ili9328paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
30 extern void ili9328paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
34 extern void ili9328paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
31 extern void ili9328paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
35 extern void ili9328paintFilRect(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
32 extern void ili9328paintFilRect(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
36 extern void ili9328paintFilCirc(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
33 extern void ili9328paintFilCirc(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
37 extern void ili9328paintFilCircMidPoint(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
34 extern void ili9328paintFilCircMidPoint(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
38 extern void ili9328getPix(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
35 extern void ili9328getPix(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
39 extern void ili9328refreshenable(struct LCD_t* LCD,int enable);
36 extern void ili9328refreshenable(struct LCD_t* LCD,int enable);
40 extern void ili9328paintChar(LCD_t* LCD,char buffer,uint16_t Xpos,uint16_t Ypos,sFONT* font,uint32_t color);
37 extern void ili9328paintChar(LCD_t* LCD,char buffer,uint16_t Xpos,uint16_t Ypos,sFONT* font,uint32_t color);
41
38
42 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 )
39 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 )
43 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 )
40 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 )
44 #define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint32_t) 0x0002 )
41 #define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint32_t) 0x0002 )
45 #define ILI9328_REGISTER_ENTRYMODE ((uint32_t) 0x0003 )
42 #define ILI9328_REGISTER_ENTRYMODE ((uint32_t) 0x0003 )
46 #define ILI9328_REGISTER_RESIZECONTROL ((uint32_t) 0x0004 )
43 #define ILI9328_REGISTER_RESIZECONTROL ((uint32_t) 0x0004 )
47 #define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint32_t) 0x0007 )
44 #define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint32_t) 0x0007 )
48 #define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint32_t) 0x0008 )
45 #define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint32_t) 0x0008 )
49 #define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint32_t) 0x0009 )
46 #define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint32_t) 0x0009 )
50 #define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint32_t) 0x000A )
47 #define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint32_t) 0x000A )
51 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint32_t) 0x000C )
48 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint32_t) 0x000C )
52 #define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint32_t) 0x000D )
49 #define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint32_t) 0x000D )
53 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint32_t) 0x000F )
50 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint32_t) 0x000F )
54 #define ILI9328_REGISTER_POWERCONTROL1 ((uint32_t) 0x0010 )
51 #define ILI9328_REGISTER_POWERCONTROL1 ((uint32_t) 0x0010 )
55 #define ILI9328_REGISTER_POWERCONTROL2 ((uint32_t) 0x0011 )
52 #define ILI9328_REGISTER_POWERCONTROL2 ((uint32_t) 0x0011 )
56 #define ILI9328_REGISTER_POWERCONTROL3 ((uint32_t) 0x0012 )
53 #define ILI9328_REGISTER_POWERCONTROL3 ((uint32_t) 0x0012 )
57 #define ILI9328_REGISTER_POWERCONTROL4 ((uint32_t) 0x0013 )
54 #define ILI9328_REGISTER_POWERCONTROL4 ((uint32_t) 0x0013 )
58 #define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint32_t) 0x0020 )
55 #define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint32_t) 0x0020 )
59 #define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint32_t) 0x0021 )
56 #define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint32_t) 0x0021 )
60 #define ILI9328_REGISTER_WRITEDATATOGRAM ((uint32_t) 0x0022 )
57 #define ILI9328_REGISTER_WRITEDATATOGRAM ((uint32_t) 0x0022 )
61 #define ILI9328_REGISTER_POWERCONTROL7 ((uint32_t) 0x0029 )
58 #define ILI9328_REGISTER_POWERCONTROL7 ((uint32_t) 0x0029 )
62 #define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint32_t) 0x002B )
59 #define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint32_t) 0x002B )
63 #define ILI9328_REGISTER_GAMMACONTROL1 ((uint32_t) 0x0030 )
60 #define ILI9328_REGISTER_GAMMACONTROL1 ((uint32_t) 0x0030 )
64 #define ILI9328_REGISTER_GAMMACONTROL2 ((uint32_t) 0x0031 )
61 #define ILI9328_REGISTER_GAMMACONTROL2 ((uint32_t) 0x0031 )
65 #define ILI9328_REGISTER_GAMMACONTROL3 ((uint32_t) 0x0032 )
62 #define ILI9328_REGISTER_GAMMACONTROL3 ((uint32_t) 0x0032 )
66 #define ILI9328_REGISTER_GAMMACONTROL4 ((uint32_t) 0x0035 )
63 #define ILI9328_REGISTER_GAMMACONTROL4 ((uint32_t) 0x0035 )
67 #define ILI9328_REGISTER_GAMMACONTROL5 ((uint32_t) 0x0036 )
64 #define ILI9328_REGISTER_GAMMACONTROL5 ((uint32_t) 0x0036 )
68 #define ILI9328_REGISTER_GAMMACONTROL6 ((uint32_t) 0x0037 )
65 #define ILI9328_REGISTER_GAMMACONTROL6 ((uint32_t) 0x0037 )
69 #define ILI9328_REGISTER_GAMMACONTROL7 ((uint32_t) 0x0038 )
66 #define ILI9328_REGISTER_GAMMACONTROL7 ((uint32_t) 0x0038 )
70 #define ILI9328_REGISTER_GAMMACONTROL8 ((uint32_t) 0x0039 )
67 #define ILI9328_REGISTER_GAMMACONTROL8 ((uint32_t) 0x0039 )
71 #define ILI9328_REGISTER_GAMMACONTROL9 ((uint32_t) 0x003C )
68 #define ILI9328_REGISTER_GAMMACONTROL9 ((uint32_t) 0x003C )
72 #define ILI9328_REGISTER_GAMMACONTROL10 ((uint32_t) 0x003D )
69 #define ILI9328_REGISTER_GAMMACONTROL10 ((uint32_t) 0x003D )
73 #define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint32_t) 0x0050 )
70 #define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint32_t) 0x0050 )
74 #define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint32_t) 0x0051 )
71 #define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint32_t) 0x0051 )
75 #define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint32_t) 0x0052 )
72 #define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint32_t) 0x0052 )
76 #define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint32_t) 0x0053 )
73 #define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint32_t) 0x0053 )
77 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint32_t) 0x0060 )
74 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint32_t) 0x0060 )
78 #define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint32_t) 0x0061 )
75 #define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint32_t) 0x0061 )
79 #define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint32_t) 0x006A )
76 #define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint32_t) 0x006A )
80 #define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint32_t) 0x0080 )
77 #define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint32_t) 0x0080 )
81 #define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint32_t) 0x0081 )
78 #define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint32_t) 0x0081 )
82 #define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint32_t) 0x0082 )
79 #define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint32_t) 0x0082 )
83 #define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint32_t) 0x0083 )
80 #define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint32_t) 0x0083 )
84 #define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint32_t) 0x0084 )
81 #define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint32_t) 0x0084 )
85 #define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint32_t) 0x0085 )
82 #define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint32_t) 0x0085 )
86 #define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint32_t) 0x0090 )
83 #define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint32_t) 0x0090 )
87 #define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint32_t) 0x0092 )
84 #define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint32_t) 0x0092 )
88 #define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint32_t) 0x0095 )
85 #define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint32_t) 0x0095 )
89 #define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint32_t) 0x00A1 )
86 #define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint32_t) 0x00A1 )
90 #define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint32_t) 0x00A2 )
87 #define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint32_t) 0x00A2 )
91 #define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint32_t) 0x00A5 )
88 #define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint32_t) 0x00A5 )
92
89
93 #ifdef _PRVATE_ILI9328_
90 #ifdef _PRVATE_ILI9328_
94 void ili9328cpFrame(LCD_t* LCD,void* buffer,int x,int y,int w, int h);
91 void ili9328cpFrame(LCD_t* LCD,void* buffer,int x,int y,int w, int h);
95 #endif
92 #endif
96
93
97 #endif
94 #endif
98
95
99
96
100
97
101
98
102
99
@@ -1,93 +1,90
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef SSD2119_H
22 #ifndef SSD2119_H
23 #define SSD2119_H
23 #define SSD2119_H
24
24
25 #include <uhandle.h>
26 #include <genericLCD_Controler.h>
25 #include <genericLCD_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29
26
30 extern int ssd2119init(struct LCD_t* LCD);
27 extern int ssd2119init(struct LCD_t* LCD);
31 extern void ssd2119setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
28 extern void ssd2119setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
32 extern void ssd2119setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
29 extern void ssd2119setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
33 extern void ssd2119paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
30 extern void ssd2119paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
34 extern void ssd2119paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
31 extern void ssd2119paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
35 extern void ssd2119paintFilRect(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
32 extern void ssd2119paintFilRect(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
36 extern void ssd2119paintFilCirc(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
33 extern void ssd2119paintFilCirc(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
37 extern void ssd2119paintFilCircMidPoint(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
34 extern void ssd2119paintFilCircMidPoint(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
38 extern void ssd2119refreshenable(struct LCD_t* LCD,int enable);
35 extern void ssd2119refreshenable(struct LCD_t* LCD,int enable);
39
36
40 /* SSD2119 registers */
37 /* SSD2119 registers */
41
38
42 #define SSD2119_REGISTER_DEVICE_CODE_READ ((uint32_t)0x00)
39 #define SSD2119_REGISTER_DEVICE_CODE_READ ((uint32_t)0x00)
43 #define SSD2119_REGISTER_OSC_START ((uint32_t)0x00)
40 #define SSD2119_REGISTER_OSC_START ((uint32_t)0x00)
44 #define SSD2119_REGISTER_OUTPUT_CTRL ((uint32_t)0x01)
41 #define SSD2119_REGISTER_OUTPUT_CTRL ((uint32_t)0x01)
45 #define SSD2119_REGISTER_LCD_DRIVE_AC_CTRL ((uint32_t)0x02)
42 #define SSD2119_REGISTER_LCD_DRIVE_AC_CTRL ((uint32_t)0x02)
46 #define SSD2119_REGISTER_PWR_CTRL_1 ((uint32_t)0x03)
43 #define SSD2119_REGISTER_PWR_CTRL_1 ((uint32_t)0x03)
47 #define SSD2119_REGISTER_DISPLAY_CTRL ((uint32_t)0x07)
44 #define SSD2119_REGISTER_DISPLAY_CTRL ((uint32_t)0x07)
48 #define SSD2119_REGISTER_FRAME_CYCLE_CTRL ((uint32_t)0x0B)
45 #define SSD2119_REGISTER_FRAME_CYCLE_CTRL ((uint32_t)0x0B)
49 #define SSD2119_REGISTER_PWR_CTRL_2 ((uint32_t)0x0C)
46 #define SSD2119_REGISTER_PWR_CTRL_2 ((uint32_t)0x0C)
50 #define SSD2119_REGISTER_PWR_CTRL_3 ((uint32_t)0x0D)
47 #define SSD2119_REGISTER_PWR_CTRL_3 ((uint32_t)0x0D)
51 #define SSD2119_REGISTER_PWR_CTRL_4 ((uint32_t)0x0E)
48 #define SSD2119_REGISTER_PWR_CTRL_4 ((uint32_t)0x0E)
52 #define SSD2119_REGISTER_GATE_SCAN_START ((uint32_t)0x0F)
49 #define SSD2119_REGISTER_GATE_SCAN_START ((uint32_t)0x0F)
53 #define SSD2119_REGISTER_SLEEP_MODE_1 ((uint32_t)0x10)
50 #define SSD2119_REGISTER_SLEEP_MODE_1 ((uint32_t)0x10)
54 #define SSD2119_REGISTER_ENTRY_MODE ((uint32_t)0x11)
51 #define SSD2119_REGISTER_ENTRY_MODE ((uint32_t)0x11)
55 #define SSD2119_REGISTER_SLEEP_MODE_2 ((uint32_t)0x12)
52 #define SSD2119_REGISTER_SLEEP_MODE_2 ((uint32_t)0x12)
56 #define SSD2119_REGISTER_GEN_IF_CTRL ((uint32_t)0x15)
53 #define SSD2119_REGISTER_GEN_IF_CTRL ((uint32_t)0x15)
57 #define SSD2119_REGISTER_H_PORCH ((uint32_t)0x16)
54 #define SSD2119_REGISTER_H_PORCH ((uint32_t)0x16)
58 #define SSD2119_REGISTER_V_PORCH ((uint32_t)0x17)
55 #define SSD2119_REGISTER_V_PORCH ((uint32_t)0x17)
59 #define SSD2119_REGISTER_PWR_CTRL_5 ((uint32_t)0x1E)
56 #define SSD2119_REGISTER_PWR_CTRL_5 ((uint32_t)0x1E)
60 #define SSD2119_REGISTER_UNIFORMITY ((uint32_t)0x20)
57 #define SSD2119_REGISTER_UNIFORMITY ((uint32_t)0x20)
61 #define SSD2119_REGISTER_RAM_DATA ((uint32_t)0x22)
58 #define SSD2119_REGISTER_RAM_DATA ((uint32_t)0x22)
62 #define SSD2119_REGISTER_FRAME_FREQ ((uint32_t)0x25)
59 #define SSD2119_REGISTER_FRAME_FREQ ((uint32_t)0x25)
63 #define SSD2119_REGISTER_ANALOG_SET ((uint32_t)0x26)
60 #define SSD2119_REGISTER_ANALOG_SET ((uint32_t)0x26)
64 #define SSD2119_REGISTER_VCOM_OTP_1 ((uint32_t)0x28)
61 #define SSD2119_REGISTER_VCOM_OTP_1 ((uint32_t)0x28)
65 #define SSD2119_REGISTER_VCOM_OTP_2 ((uint32_t)0x29)
62 #define SSD2119_REGISTER_VCOM_OTP_2 ((uint32_t)0x29)
66 #define SSD2119_REGISTER_GAMMA_CTRL_1 ((uint32_t)0x30)
63 #define SSD2119_REGISTER_GAMMA_CTRL_1 ((uint32_t)0x30)
67 #define SSD2119_REGISTER_GAMMA_CTRL_2 ((uint32_t)0x31)
64 #define SSD2119_REGISTER_GAMMA_CTRL_2 ((uint32_t)0x31)
68 #define SSD2119_REGISTER_GAMMA_CTRL_3 ((uint32_t)0x32)
65 #define SSD2119_REGISTER_GAMMA_CTRL_3 ((uint32_t)0x32)
69 #define SSD2119_REGISTER_GAMMA_CTRL_4 ((uint32_t)0x33)
66 #define SSD2119_REGISTER_GAMMA_CTRL_4 ((uint32_t)0x33)
70 #define SSD2119_REGISTER_GAMMA_CTRL_5 ((uint32_t)0x34)
67 #define SSD2119_REGISTER_GAMMA_CTRL_5 ((uint32_t)0x34)
71 #define SSD2119_REGISTER_GAMMA_CTRL_6 ((uint32_t)0x35)
68 #define SSD2119_REGISTER_GAMMA_CTRL_6 ((uint32_t)0x35)
72 #define SSD2119_REGISTER_GAMMA_CTRL_7 ((uint32_t)0x36)
69 #define SSD2119_REGISTER_GAMMA_CTRL_7 ((uint32_t)0x36)
73 #define SSD2119_REGISTER_GAMMA_CTRL_8 ((uint32_t)0x37)
70 #define SSD2119_REGISTER_GAMMA_CTRL_8 ((uint32_t)0x37)
74 #define SSD2119_REGISTER_GAMMA_CTRL_9 ((uint32_t)0x3A)
71 #define SSD2119_REGISTER_GAMMA_CTRL_9 ((uint32_t)0x3A)
75 #define SSD2119_REGISTER_GAMMA_CTRL_10 ((uint32_t)0x3B)
72 #define SSD2119_REGISTER_GAMMA_CTRL_10 ((uint32_t)0x3B)
76 #define SSD2119_REGISTER_V_SCROLL_1 ((uint32_t)0x41)
73 #define SSD2119_REGISTER_V_SCROLL_1 ((uint32_t)0x41)
77 #define SSD2119_REGISTER_V_SCROLL_2 ((uint32_t)0x42)
74 #define SSD2119_REGISTER_V_SCROLL_2 ((uint32_t)0x42)
78 #define SSD2119_REGISTER_V_RAM_POS ((uint32_t)0x44)
75 #define SSD2119_REGISTER_V_RAM_POS ((uint32_t)0x44)
79 #define SSD2119_REGISTER_H_RAM_START ((uint32_t)0x45)
76 #define SSD2119_REGISTER_H_RAM_START ((uint32_t)0x45)
80 #define SSD2119_REGISTER_H_RAM_END ((uint32_t)0x46)
77 #define SSD2119_REGISTER_H_RAM_END ((uint32_t)0x46)
81 #define SSD2119_REGISTER_1_DRV_POS_1 ((uint32_t)0x48)
78 #define SSD2119_REGISTER_1_DRV_POS_1 ((uint32_t)0x48)
82 #define SSD2119_REGISTER_1_DRV_POS_2 ((uint32_t)0x49)
79 #define SSD2119_REGISTER_1_DRV_POS_2 ((uint32_t)0x49)
83 #define SSD2119_REGISTER_2_DRV_POS_1 ((uint32_t)0x4A)
80 #define SSD2119_REGISTER_2_DRV_POS_1 ((uint32_t)0x4A)
84 #define SSD2119_REGISTER_2_DRV_POS_2 ((uint32_t)0x4B)
81 #define SSD2119_REGISTER_2_DRV_POS_2 ((uint32_t)0x4B)
85 #define SSD2119_REGISTER_X_RAM_ADDR ((uint32_t)0x4E)
82 #define SSD2119_REGISTER_X_RAM_ADDR ((uint32_t)0x4E)
86 #define SSD2119_REGISTER_Y_RAM_ADDR ((uint32_t)0x4F)
83 #define SSD2119_REGISTER_Y_RAM_ADDR ((uint32_t)0x4F)
87
84
88 #endif
85 #endif
89
86
90
87
91
88
92
89
93
90
@@ -1,72 +1,70
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef TERMINAL_H
22 #ifndef TERMINAL_H
23 #define TERMINAL_H
23 #define TERMINAL_H
24 #include <stdint.h>
25 #include <widget.h>
24 #include <widget.h>
26 #include <streamdevices.h>
25 #include <streamdevices.h>
27 #include <genericLCD_Controler.h>
26 #include <genericLCD_Controler.h>
28 #include <fonts.h>
29
27
30 typedef struct terminal_t
28 typedef struct terminal_t
31 {
29 {
32 uint16_t line;
30 uint16_t line;
33 uint16_t column;
31 uint16_t column;
34 uint16_t lineCount;
32 uint16_t lineCount;
35 uint16_t columnCount;
33 uint16_t columnCount;
36 uint16_t firstLine;
34 uint16_t firstLine;
37 uint16_t lastLine;
35 uint16_t lastLine;
38 uint16_t Xpos;
36 uint16_t Xpos;
39 uint16_t Ypos;
37 uint16_t Ypos;
40 uint16_t width;
38 uint16_t width;
41 uint16_t height;
39 uint16_t height;
42 uint32_t backgroundColor;
40 uint32_t backgroundColor;
43 uint32_t textColor;
41 uint32_t textColor;
44 int8_t verticalSpace;
42 int8_t verticalSpace;
45 int8_t horizontalSpace;
43 int8_t horizontalSpace;
46 int8_t empty;
44 int8_t empty;
47 LCD_t* LCD;
45 LCD_t* LCD;
48 sFONT* font;
46 sFONT* font;
49 char* buffer;
47 char* buffer;
50 }terminal_t;
48 }terminal_t;
51
49
52 int terminal_init(terminal_t* terminal,LCD_t* LCD,sFONT* font,streamdevice* strdev);
50 int terminal_init(terminal_t* terminal,LCD_t* LCD,sFONT* font,streamdevice* strdev);
53 void terminal_setgeometry(terminal_t* terminal,uint16_t Xpos,uint16_t Ypos,uint16_t width,uint16_t height);
51 void terminal_setgeometry(terminal_t* terminal,uint16_t Xpos,uint16_t Ypos,uint16_t width,uint16_t height);
54 void terminal_clear(terminal_t* terminal);
52 void terminal_clear(terminal_t* terminal);
55 void terminal_setbackgroundColor(terminal_t* terminal, uint32_t backgrooundColor);
53 void terminal_setbackgroundColor(terminal_t* terminal, uint32_t backgrooundColor);
56 void terminal_settextColor(terminal_t* terminal, uint32_t textColor);
54 void terminal_settextColor(terminal_t* terminal, uint32_t textColor);
57 void terminal_movecursor(terminal_t* terminal,int n);
55 void terminal_movecursor(terminal_t* terminal,int n);
58 void terminal_clearCurentLine(terminal_t* terminal);
56 void terminal_clearCurentLine(terminal_t* terminal);
59 int terminal_write(streamdevice* device,void* data,int size, int n);
57 int terminal_write(streamdevice* device,void* data,int size, int n);
60 int terminal_read(streamdevice* device,void* data,int size, int n);
58 int terminal_read(streamdevice* device,void* data,int size, int n);
61 int terminal_setpos(streamdevice* device,int pos);
59 int terminal_setpos(streamdevice* device,int pos);
62 int terminal_close(streamdevice* device);
60 int terminal_close(streamdevice* device);
63
61
64
62
65
63
66
64
67
65
68
66
69
67
70
68
71
69
72 #endif
70 #endif
@@ -1,63 +1,60
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef STMPE811_H
22 #ifndef STMPE811_H
23 #define STMPE811_H
23 #define STMPE811_H
24 #include <stdio.h>
24 #include <stdio.h>
25 #include <uhandle.h>
26 #include <genericTC_Controler.h>
25 #include <genericTC_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 #include <spi.h>
26 #include <spi.h>
30
27
31 typedef struct ADS7843_t
28 typedef struct ADS7843_t
32 {
29 {
33 spi_t spidev;
30 spi_t spidev;
34 void (*setnCS)(char);
31 void (*setnCS)(char);
35 int (*busy)();
32 int (*busy)();
36 }ADS7843_t;
33 }ADS7843_t;
37
34
38
35
39 extern int ads7843init(ADS7843_t *dev, spi_t spidev,void (*setnCS)(char),int (*busy)());
36 extern int ads7843init(ADS7843_t *dev, spi_t spidev,void (*setnCS)(char),int (*busy)());
40 extern int ads7843read(ADS7843_t *dev,int* x,int* y);
37 extern int ads7843read(ADS7843_t *dev,int* x,int* y);
41
38
42
39
43
40
44 #endif
41 #endif
45
42
46
43
47
44
48
45
49
46
50
47
51
48
52
49
53
50
54
51
55
52
56
53
57
54
58
55
59
56
60
57
61
58
62
59
63
60
@@ -1,115 +1,112
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef STMPE811_H
22 #ifndef STMPE811_H
23 #define STMPE811_H
23 #define STMPE811_H
24 #include <stdio.h>
24 #include <stdio.h>
25 #include <uhandle.h>
26 #include <genericTC_Controler.h>
25 #include <genericTC_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 #include <i2c.h>
26 #include <i2c.h>
30
27
31 typedef struct STMPE811_t
28 typedef struct STMPE811_t
32 {
29 {
33 i2c_t i2cdev;
30 i2c_t i2cdev;
34 uint8_t devAddress;
31 uint8_t devAddress;
35 }STMPE811_t;
32 }STMPE811_t;
36
33
37
34
38 extern int stmpe811init(STMPE811_t *dev, i2c_t i2cdev, uint8_t A0);
35 extern int stmpe811init(STMPE811_t *dev, i2c_t i2cdev, uint8_t A0);
39 extern int stmpe811getID(STMPE811_t *dev);
36 extern int stmpe811getID(STMPE811_t *dev);
40
37
41
38
42
39
43 #define STMPE811_REGISTER_CHIP_ID ((uint32_t) 0x0000 )
40 #define STMPE811_REGISTER_CHIP_ID ((uint32_t) 0x0000 )
44 #define STMPE811_REGISTER_ID_VER ((uint32_t) 0x0002 )
41 #define STMPE811_REGISTER_ID_VER ((uint32_t) 0x0002 )
45 #define STMPE811_REGISTER_SYS_CTRL1 ((uint32_t) 0x0003 )
42 #define STMPE811_REGISTER_SYS_CTRL1 ((uint32_t) 0x0003 )
46 #define STMPE811_REGISTER_SYS_CTRL2 ((uint32_t) 0x0004 )
43 #define STMPE811_REGISTER_SYS_CTRL2 ((uint32_t) 0x0004 )
47 #define STMPE811_REGISTER_SPI_CFG ((uint32_t) 0x0008 )
44 #define STMPE811_REGISTER_SPI_CFG ((uint32_t) 0x0008 )
48 #define STMPE811_REGISTER_INT_CTRL ((uint32_t) 0x0009 )
45 #define STMPE811_REGISTER_INT_CTRL ((uint32_t) 0x0009 )
49 #define STMPE811_REGISTER_INT_EN ((uint32_t) 0x000A )
46 #define STMPE811_REGISTER_INT_EN ((uint32_t) 0x000A )
50 #define STMPE811_REGISTER_INT_STA ((uint32_t) 0x000B )
47 #define STMPE811_REGISTER_INT_STA ((uint32_t) 0x000B )
51 #define STMPE811_REGISTER_GPIO_EN ((uint32_t) 0x000C )
48 #define STMPE811_REGISTER_GPIO_EN ((uint32_t) 0x000C )
52 #define STMPE811_REGISTER_GPIO_INT_STA ((uint32_t) 0x000D )
49 #define STMPE811_REGISTER_GPIO_INT_STA ((uint32_t) 0x000D )
53 #define STMPE811_REGISTER_ADC_INT_EN ((uint32_t) 0x000E )
50 #define STMPE811_REGISTER_ADC_INT_EN ((uint32_t) 0x000E )
54 #define STMPE811_REGISTER_ADC_INT_STA ((uint32_t) 0x000F )
51 #define STMPE811_REGISTER_ADC_INT_STA ((uint32_t) 0x000F )
55 #define STMPE811_REGISTER_GPIO_SET_PIN ((uint32_t) 0x0010 )
52 #define STMPE811_REGISTER_GPIO_SET_PIN ((uint32_t) 0x0010 )
56 #define STMPE811_REGISTER_GPIO_CLR_PIN ((uint32_t) 0x0011 )
53 #define STMPE811_REGISTER_GPIO_CLR_PIN ((uint32_t) 0x0011 )
57 #define STMPE811_REGISTER_GPIO_MP_STA ((uint32_t) 0x0012 )
54 #define STMPE811_REGISTER_GPIO_MP_STA ((uint32_t) 0x0012 )
58 #define STMPE811_REGISTER_GPIO_DIR ((uint32_t) 0x0013 )
55 #define STMPE811_REGISTER_GPIO_DIR ((uint32_t) 0x0013 )
59 #define STMPE811_REGISTER_GPIO_ED ((uint32_t) 0x0014 )
56 #define STMPE811_REGISTER_GPIO_ED ((uint32_t) 0x0014 )
60 #define STMPE811_REGISTER_GPIO_RE ((uint32_t) 0x0015 )
57 #define STMPE811_REGISTER_GPIO_RE ((uint32_t) 0x0015 )
61 #define STMPE811_REGISTER_GPIO_FE ((uint32_t) 0x0016 )
58 #define STMPE811_REGISTER_GPIO_FE ((uint32_t) 0x0016 )
62 #define STMPE811_REGISTER_GPIO_AF ((uint32_t) 0x0017 )
59 #define STMPE811_REGISTER_GPIO_AF ((uint32_t) 0x0017 )
63 #define STMPE811_REGISTER_ADC_CTRL1 ((uint32_t) 0x0020 )
60 #define STMPE811_REGISTER_ADC_CTRL1 ((uint32_t) 0x0020 )
64 #define STMPE811_REGISTER_ADC_CTRL2 ((uint32_t) 0x0021 )
61 #define STMPE811_REGISTER_ADC_CTRL2 ((uint32_t) 0x0021 )
65 #define STMPE811_REGISTER_ADC_CAPT ((uint32_t) 0x0022 )
62 #define STMPE811_REGISTER_ADC_CAPT ((uint32_t) 0x0022 )
66 #define STMPE811_REGISTER_ADC_DATA_CH0 ((uint32_t) 0x0030 )
63 #define STMPE811_REGISTER_ADC_DATA_CH0 ((uint32_t) 0x0030 )
67 #define STMPE811_REGISTER_ADC_DATA_CH1 ((uint32_t) 0x0032 )
64 #define STMPE811_REGISTER_ADC_DATA_CH1 ((uint32_t) 0x0032 )
68 #define STMPE811_REGISTER_ADC_DATA_CH2 ((uint32_t) 0x0034 )
65 #define STMPE811_REGISTER_ADC_DATA_CH2 ((uint32_t) 0x0034 )
69 #define STMPE811_REGISTER_ADC_DATA_CH3 ((uint32_t) 0x0036 )
66 #define STMPE811_REGISTER_ADC_DATA_CH3 ((uint32_t) 0x0036 )
70 #define STMPE811_REGISTER_ADC_DATA_CH4 ((uint32_t) 0x0038 )
67 #define STMPE811_REGISTER_ADC_DATA_CH4 ((uint32_t) 0x0038 )
71 #define STMPE811_REGISTER_ADC_DATA_CH5 ((uint32_t) 0x003A )
68 #define STMPE811_REGISTER_ADC_DATA_CH5 ((uint32_t) 0x003A )
72 #define STMPE811_REGISTER_ADC_DATA_CH6 ((uint32_t) 0x003C )
69 #define STMPE811_REGISTER_ADC_DATA_CH6 ((uint32_t) 0x003C )
73 #define STMPE811_REGISTER_ADC_DATA_CH7 ((uint32_t) 0x003E )
70 #define STMPE811_REGISTER_ADC_DATA_CH7 ((uint32_t) 0x003E )
74 #define STMPE811_REGISTER_TSC_CTRL ((uint32_t) 0x0040 )
71 #define STMPE811_REGISTER_TSC_CTRL ((uint32_t) 0x0040 )
75 #define STMPE811_REGISTER_TSC_CFG ((uint32_t) 0x0041 )
72 #define STMPE811_REGISTER_TSC_CFG ((uint32_t) 0x0041 )
76 #define STMPE811_REGISTER_WDW_TR_X ((uint32_t) 0x0042 )
73 #define STMPE811_REGISTER_WDW_TR_X ((uint32_t) 0x0042 )
77 #define STMPE811_REGISTER_WDW_TR_Y ((uint32_t) 0x0044 )
74 #define STMPE811_REGISTER_WDW_TR_Y ((uint32_t) 0x0044 )
78 #define STMPE811_REGISTER_WDW_BL_X ((uint32_t) 0x0046 )
75 #define STMPE811_REGISTER_WDW_BL_X ((uint32_t) 0x0046 )
79 #define STMPE811_REGISTER_WDW_BL_Y ((uint32_t) 0x0048 )
76 #define STMPE811_REGISTER_WDW_BL_Y ((uint32_t) 0x0048 )
80 #define STMPE811_REGISTER_FIFO_TH ((uint32_t) 0x004A )
77 #define STMPE811_REGISTER_FIFO_TH ((uint32_t) 0x004A )
81 #define STMPE811_REGISTER_FIFO_STA ((uint32_t) 0x004B )
78 #define STMPE811_REGISTER_FIFO_STA ((uint32_t) 0x004B )
82 #define STMPE811_REGISTER_FIFO_SIZE ((uint32_t) 0x004C )
79 #define STMPE811_REGISTER_FIFO_SIZE ((uint32_t) 0x004C )
83 #define STMPE811_REGISTER_TSC_DATA_X ((uint32_t) 0x004D )
80 #define STMPE811_REGISTER_TSC_DATA_X ((uint32_t) 0x004D )
84 #define STMPE811_REGISTER_TSC_DATA_Y ((uint32_t) 0x004F )
81 #define STMPE811_REGISTER_TSC_DATA_Y ((uint32_t) 0x004F )
85 #define STMPE811_REGISTER_TSC_DATA_Z ((uint32_t) 0x0051 )
82 #define STMPE811_REGISTER_TSC_DATA_Z ((uint32_t) 0x0051 )
86 #define STMPE811_REGISTER_TSC_DATA_XYZ ((uint32_t) 0x0052 )
83 #define STMPE811_REGISTER_TSC_DATA_XYZ ((uint32_t) 0x0052 )
87 #define STMPE811_REGISTER_TSC_FRACTION_Z ((uint32_t) 0x0056 )
84 #define STMPE811_REGISTER_TSC_FRACTION_Z ((uint32_t) 0x0056 )
88 #define STMPE811_REGISTER_TSC_DATA ((uint32_t) 0x0057 )
85 #define STMPE811_REGISTER_TSC_DATA ((uint32_t) 0x0057 )
89 #define STMPE811_REGISTER_TSC_I_DRIVE ((uint32_t) 0x0058 )
86 #define STMPE811_REGISTER_TSC_I_DRIVE ((uint32_t) 0x0058 )
90 #define STMPE811_REGISTER_TSC_SHIELD ((uint32_t) 0x0059 )
87 #define STMPE811_REGISTER_TSC_SHIELD ((uint32_t) 0x0059 )
91 #define STMPE811_REGISTER_TEMP_CTRL ((uint32_t) 0x0060 )
88 #define STMPE811_REGISTER_TEMP_CTRL ((uint32_t) 0x0060 )
92 #define STMPE811_REGISTER_TEMP_DATA ((uint32_t) 0x0061 )
89 #define STMPE811_REGISTER_TEMP_DATA ((uint32_t) 0x0061 )
93 #define STMPE811_REGISTER_TEMP_TH ((uint32_t) 0x0062 )
90 #define STMPE811_REGISTER_TEMP_TH ((uint32_t) 0x0062 )
94
91
95
92
96 #endif
93 #endif
97
94
98
95
99
96
100
97
101
98
102
99
103
100
104
101
105
102
106
103
107
104
108
105
109
106
110
107
111
108
112
109
113
110
114
111
115
112
@@ -1,37 +1,36
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef GENERICTC_CONTROLER_H
22 #ifndef GENERICTC_CONTROLER_H
23 #define GENERICTC_CONTROLER_H
23 #define GENERICTC_CONTROLER_H
24
24
25 #include <uhandle.h>
25 #include <uhandle.h>
26 #include <stdint.h>
27 #include <fonts.h>
26 #include <fonts.h>
28
27
29
28
30
29
31
30
32 #endif /*GENERICTC_CONTROLER_H*/
31 #endif /*GENERICTC_CONTROLER_H*/
33
32
34
33
35
34
36
35
37
36
@@ -1,72 +1,71
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef STREAMDEVICES_H
22 #ifndef STREAMDEVICES_H
23 #define STREAMDEVICES_H
23 #define STREAMDEVICES_H
24 #include <uhandle.h>
24 #include <uhandle.h>
25 #include <stdint.h>
26
25
27 typedef struct streamdevice* streamdeviceptr;
26 typedef struct streamdevice* streamdeviceptr;
28 struct streamdevice_ops;
27 struct streamdevice_ops;
29
28
30 typedef volatile struct streamdevice
29 typedef volatile struct streamdevice
31 {
30 {
32 struct streamdevice_ops* ops;
31 struct streamdevice_ops* ops;
33 volatile uint32_t streamPt;
32 volatile uint32_t streamPt;
34 volatile UHANDLE _stream;
33 volatile UHANDLE _stream;
35 volatile uint32_t mode;
34 volatile uint32_t mode;
36 }streamdevice;
35 }streamdevice;
37
36
38
37
39 typedef struct streamdevice_ops
38 typedef struct streamdevice_ops
40 {
39 {
41 int (*write)(streamdevice* device,void* data,int size, int n);
40 int (*write)(streamdevice* device,void* data,int size, int n);
42 int (*read)(streamdevice* device,void* data,int size, int n);
41 int (*read)(streamdevice* device,void* data,int size, int n);
43 int (*setpos)(streamdevice* device,int pos);
42 int (*setpos)(streamdevice* device,int pos);
44 int (*close)(streamdevice* device);
43 int (*close)(streamdevice* device);
45 }streamdevice_ops;
44 }streamdevice_ops;
46
45
47
46
48
47
49 typedef int (*write_t)(streamdeviceptr device,void* data,int size, int n);
48 typedef int (*write_t)(streamdeviceptr device,void* data,int size, int n);
50 typedef int (*read_t)(streamdeviceptr device,void* data,int size, int n);
49 typedef int (*read_t)(streamdeviceptr device,void* data,int size, int n);
51 typedef int (*setpos_t)(streamdeviceptr device,int pos);
50 typedef int (*setpos_t)(streamdeviceptr device,int pos);
52 typedef int (*close_t)(streamdeviceptr device);
51 typedef int (*close_t)(streamdeviceptr device);
53
52
54
53
55
54
56
55
57 #endif
56 #endif
58
57
59
58
60
59
61
60
62
61
63
62
64
63
65
64
66
65
67
66
68
67
69
68
70
69
71
70
72
71
@@ -1,75 +1,73
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef THREAD_H
22 #ifndef THREAD_H
23 #define THREAD_H
23 #define THREAD_H
24 #include <stdint.h>
24 #include <stdint.h>
25 #include <uhandle.h>
26 #include <streamdevices.h>
27
25
28 #ifdef __cplusplus
26 #ifdef __cplusplus
29 extern "C" {
27 extern "C" {
30 #endif
28 #endif
31
29
32 /*
30 /*
33 This structure holds the thread context. To do so, you need to keep a track of the programm counter,
31 This structure holds the thread context. To do so, you need to keep a track of the programm counter,
34 to change the stack pointer for each thread and to save all registers needing to be saved. Since the
32 to change the stack pointer for each thread and to save all registers needing to be saved. Since the
35 number of regiter to be saved vary from one processor to an other, it's easier to save them in the
33 number of regiter to be saved vary from one processor to an other, it's easier to save them in the
36 owner thread stack;
34 owner thread stack;
37 */
35 */
38 typedef struct thread_t
36 typedef struct thread_t
39 {
37 {
40 int (*func)(void*);
38 int (*func)(void*);
41 void* __stack__;
39 void* __stack__;
42 int stackSize;
40 int stackSize;
43 int priority;
41 int priority;
44 struct thread_t* prev;
42 struct thread_t* prev;
45 struct thread_t* next;
43 struct thread_t* next;
46 }thread_t;
44 }thread_t;
47
45
48
46
49 extern int threadcreate(thread_t* thread,void* stack,int stackSize,int (*func)(void*));
47 extern int threadcreate(thread_t* thread,void* stack,int stackSize,int (*func)(void*));
50 extern int threadstart(thread_t* thread);
48 extern int threadstart(thread_t* thread);
51 extern int threadstop(thread_t* thread);
49 extern int threadstop(thread_t* thread);
52
50
53 #ifdef __THREAD_PRIVATE__
51 #ifdef __THREAD_PRIVATE__
54 extern void __cpusavecontext(void* dataspace);
52 extern void __cpusavecontext(void* dataspace);
55 extern void __cpurestorecontext(void* dataspace);
53 extern void __cpurestorecontext(void* dataspace);
56 extern void __initThreading();
54 extern void __initThreading();
57 extern thread_t mainThread;
55 extern thread_t mainThread;
58 #endif
56 #endif
59
57
60 #ifdef __cplusplus
58 #ifdef __cplusplus
61 }
59 }
62 #endif
60 #endif
63 #endif //THREAD_H
61 #endif //THREAD_H
64
62
65
63
66
64
67
65
68
66
69
67
70
68
71
69
72
70
73
71
74
72
75
73
@@ -1,29 +1,29
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2012, Alexis Jeandet
3 -- Copyright (C) 2012, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #ifndef UHANDLE_H
22 #ifndef UHANDLE_H
23 #define UHANDLE_H
23 #define UHANDLE_H
24
24 #include <stdint.h>
25 typedef volatile void* UHANDLE;
25 typedef volatile void* UHANDLE;
26
26
27 #define uhandlevalide(HANDLE) ((HANDLE)!=0)
27 #define uhandlevalide(HANDLE) ((HANDLE)!=0)
28
28
29 #endif
29 #endif
@@ -1,87 +1,94
1 #
1 #
2 # Libuc2 common rules
2 # Libuc2 common rules
3 #
3 #
4 #
4 #
5
5
6 defineTest(copyFiles) {
6 defineTest(copyFiles) {
7 files = $$1
7 files = $$1
8 DDIR = $$2
8 DDIR = $$2
9 win32:DDIR ~= s,/,\\,g
9 win32:DDIR ~= s,/,\\,g
10 QMAKE_POST_LINK += $$QMAKE_MKDIR $$quote($$DDIR) $$escape_expand(\\n\\t)
10 QMAKE_POST_LINK += $$QMAKE_MKDIR $$quote($$DDIR) $$escape_expand(\\n\\t)
11 for(FILE, files) {
11 for(FILE, files) {
12 message(copying file $$FILE)
12 message(copying file $$FILE)
13 # Replace slashes in paths with backslashes for Windows
13 # Replace slashes in paths with backslashes for Windows
14 win32:FILE ~= s,/,\\,g
14 win32:FILE ~= s,/,\\,g
15 QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($$DDIR) $$escape_expand(\\n\\t)
15 QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($$DDIR) $$escape_expand(\\n\\t)
16 }
16 }
17 export(QMAKE_POST_LINK)
17 export(QMAKE_POST_LINK)
18 }
18 }
19
19
20 INCLUDEPATH += $$[QT_INSTALL_HEADERS] \
20 INCLUDEPATH += $$[QT_INSTALL_HEADERS] \
21 $$[QT_INSTALL_HEADERS]/FS \
22 $$[QT_INSTALL_HEADERS]/EEPROMS \
23 $$[QT_INSTALL_HEADERS]/AUDIO \
24 $$[QT_INSTALL_HEADERS]/POWER \
25 $$[QT_INSTALL_HEADERS]/PERIPHERALS \
26 $$[QT_INSTALL_HEADERS]/FLASH \
27 $$[QT_INSTALL_HEADERS]/ADC \
21 $$[QT_INSTALL_HEADERS]/GRAPHIC/CONTROLERS \
28 $$[QT_INSTALL_HEADERS]/GRAPHIC/CONTROLERS \
22 $$[QT_INSTALL_HEADERS]/GRAPHIC/TC_CONTROLERS \
29 $$[QT_INSTALL_HEADERS]/GRAPHIC/TC_CONTROLERS \
23 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/FONTS \
30 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/FONTS \
24 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/Widgets
31 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/Widgets
25
32
26 #
33 #
27 # Microcontroler switch
34 # Microcontroler switch
28 #
35 #
29 #
36 #
30 contains( TEMPLATE, app ) {
37 contains( TEMPLATE, app ) {
31 !isEmpty( BSP ) {
38 !isEmpty( BSP ) {
32 include(./boards/$$BSP/bsp.pri)
39 include(./boards/$$BSP/bsp.pri)
33 }
40 }
34 INCLUDEPATH+= $$[QT_INSTALL_PREFIX]/bsp/src/$$BSP
41 INCLUDEPATH+= $$[QT_INSTALL_PREFIX]/bsp/src/$$BSP
35 CONFIG += link_prl
42 CONFIG += link_prl
36 OBJECTS_DIR=obj-$$UCMODEL
43 OBJECTS_DIR=obj-$$UCMODEL
37 DESTDIR=bin-$$UCMODEL
44 DESTDIR=bin-$$UCMODEL
38 }
45 }
39
46
40 !isEmpty( UCMODEL ) {
47 !isEmpty( UCMODEL ) {
41 include(./$$UCMODEL/cpu.pri)
48 include(./$$UCMODEL/cpu.pri)
42 include(./$$UCMODEL/qmake.conf)
49 include(./$$UCMODEL/qmake.conf)
43 }
50 }
44
51
45 !isEmpty(FILESTOCOPY.files) {
52 !isEmpty(FILESTOCOPY.files) {
46 copyFiles($$FILESTOCOPY.files,$$FILESTOCOPY.path)
53 copyFiles($$FILESTOCOPY.files,$$FILESTOCOPY.path)
47 }
54 }
48
55
49 contains( TEMPLATE, lib ) {
56 contains( TEMPLATE, lib ) {
50
57
51 CONFIG+=staticlib
58 CONFIG+=staticlib
52 OBJECTS_DIR=obj-$$UCMODEL
59 OBJECTS_DIR=obj-$$UCMODEL
53
60
54 contains( CONFIG, libuc2lib) {
61 contains( CONFIG, libuc2lib) {
55 CONFIG += create_prl
62 CONFIG += create_prl
56 DESTDIR=$$[QT_INSTALL_LIBS]/$$UCMODEL
63 DESTDIR=$$[QT_INSTALL_LIBS]/$$UCMODEL
57 }else{
64 }else{
58 contains( CONFIG, bsp) {
65 contains( CONFIG, bsp) {
59 DESTDIR=$$[QT_INSTALL_PREFIX]/bsp/lib/$$BSP
66 DESTDIR=$$[QT_INSTALL_PREFIX]/bsp/lib/$$BSP
60 CONFIG += create_prl
67 CONFIG += create_prl
61 !isEmpty( BSPFILE ) {
68 !isEmpty( BSPFILE ) {
62 #bspFileCopy.target = bspFileCopy
69 #bspFileCopy.target = bspFileCopy
63 #bspFileCopy.commands = echo hello
70 #bspFileCopy.commands = echo hello
64 #QMAKE_EXTRA_TARGETS += bspFileCopy
71 #QMAKE_EXTRA_TARGETS += bspFileCopy
65 #target.depend += bspFileCopy
72 #target.depend += bspFileCopy
66 #PRE_TARGETDEPS += bspFileCopy
73 #PRE_TARGETDEPS += bspFileCopy
67 copyFiles($$BSPFILE,$$[QT_INSTALL_PREFIX]/mkspecs/features/boards/$$BSP)
74 copyFiles($$BSPFILE,$$[QT_INSTALL_PREFIX]/mkspecs/features/boards/$$BSP)
68 }
75 }
69 }else{
76 }else{
70 DESTDIR=bin-$$UCMODEL
77 DESTDIR=bin-$$UCMODEL
71 }
78 }
72 }
79 }
73 }
80 }
74
81
75
82
76
83
77
84
78
85
79
86
80
87
81
88
82
89
83
90
84
91
85
92
86
93
87
94
@@ -1,9 +1,12
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3 TARGET = vs10XX
3 TARGET = vs10XX
4
4
5 SOURCES += VS10XX.c
5 SOURCES += VS10XX.c
6
6
7 UCMODEL=simulator
7 UCMODEL=simulator
8
8
9 HEADERS += \
10 ../../../../include/AUDIO/VS10XX.h
9
11
12
@@ -1,9 +1,13
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3 TARGET = vs10XX
3 TARGET = vs10XX
4
4
5 SOURCES += VS10XX.c
5 SOURCES += VS10XX.c
6
6
7
7
8 UCMODEL=stm32f4
8 UCMODEL=stm32f4
9
9
10 HEADERS += \
11 ../../../../include/AUDIO/VS10XX.h
12
13
@@ -1,8 +1,11
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3 TARGET = ina226
3 TARGET = ina226
4
4
5 SOURCES += ina226.c
5 SOURCES += ina226.c
6
6
7 UCMODEL=simulator
7 UCMODEL=simulator
8
8
9 HEADERS += \
10 ../../../../include/POWER/ina226.h
11
@@ -1,8 +1,11
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3 TARGET = ina226
3 TARGET = ina226
4
4
5 SOURCES += ina226.c
5 SOURCES += ina226.c
6
6
7 UCMODEL=stm32f4
7 UCMODEL=stm32f4
8
8
9 HEADERS += \
10 ../../../../include/POWER/ina226.h
11
@@ -1,333 +1,333
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2013, Alexis Jeandet
3 -- Copyright (C) 2013, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22
22
23 #include <SDL.h>
23 #include <SDL.h>
24 #include <malloc.h>
24 #include <malloc.h>
25 #include "SDLCD.h"
25 #include <SDLCD.h>
26
26
27 SDL_Surface *screen;
27 SDL_Surface *screen;
28 SDL_Overlay *bmp;
28 SDL_Overlay *bmp;
29
29
30 int SDLCD_Xpos=0;
30 int SDLCD_Xpos=0;
31 int SDLCD_Ypos=0;
31 int SDLCD_Ypos=0;
32 int SDLCD_XWinStrt=0;
32 int SDLCD_XWinStrt=0;
33 int SDLCD_YWinStrt=0;
33 int SDLCD_YWinStrt=0;
34 int SDLCD_XWinEnd=0;
34 int SDLCD_XWinEnd=0;
35 int SDLCD_YWinEnd=0;
35 int SDLCD_YWinEnd=0;
36
36
37 void* SDLCD_buffer;
37 void* SDLCD_buffer;
38 int SDLCD_bpp;
38 int SDLCD_bpp;
39 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
39 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
40
40
41 static Uint32 sdl_refresh_timer(Uint32 interval, void *opaque) {
41 static Uint32 sdl_refresh_timer(Uint32 interval, void *opaque) {
42
42
43 if ( SDL_MUSTLOCK(screen) ) {
43 if ( SDL_MUSTLOCK(screen) ) {
44 if ( SDL_LockSurface(screen) < 0 ) {
44 if ( SDL_LockSurface(screen) < 0 ) {
45 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
45 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
46 return interval;
46 return interval;
47 }
47 }
48 }
48 }
49 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
49 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
50 SDL_Flip(screen);
50 SDL_Flip(screen);
51 if ( SDL_MUSTLOCK(screen) ) {
51 if ( SDL_MUSTLOCK(screen) ) {
52 SDL_UnlockSurface(screen);
52 SDL_UnlockSurface(screen);
53 }
53 }
54 return interval; /* 0 means stop timer */
54 return interval; /* 0 means stop timer */
55 }
55 }
56
56
57 void SDLCD_mkscreen(int resx,int resy,int bpp,int lcdtype)
57 void SDLCD_mkscreen(int resx,int resy,int bpp,int lcdtype)
58 {
58 {
59 int i=0;
59 int i=0;
60 if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)) {
60 if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)) {
61 fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
61 fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
62 exit(1);
62 exit(1);
63 }
63 }
64 screen = SDL_SetVideoMode(resx, resy, bpp, SDL_DOUBLEBUF);
64 screen = SDL_SetVideoMode(resx, resy, bpp, SDL_DOUBLEBUF);
65 if(!screen) {
65 if(!screen) {
66 fprintf(stderr, "SDL: could not set video mode - exiting\n");
66 fprintf(stderr, "SDL: could not set video mode - exiting\n");
67 exit(1);
67 exit(1);
68 }
68 }
69 if ( SDL_MUSTLOCK(screen) ) {
69 if ( SDL_MUSTLOCK(screen) ) {
70 if ( SDL_LockSurface(screen) < 0 ) {
70 if ( SDL_LockSurface(screen) < 0 ) {
71 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
71 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
72 return;
72 return;
73 }
73 }
74 }
74 }
75 SDL_UpdateRect(screen, 0, 0, resx, resy);
75 SDL_UpdateRect(screen, 0, 0, resx, resy);
76 if ( SDL_MUSTLOCK(screen) ) {
76 if ( SDL_MUSTLOCK(screen) ) {
77 SDL_UnlockSurface(screen);
77 SDL_UnlockSurface(screen);
78 }
78 }
79 SDLCD_buffer = malloc(resx*resy*bpp/8);
79 SDLCD_buffer = malloc(resx*resy*bpp/8);
80 SDLCD_bpp = bpp;
80 SDLCD_bpp = bpp;
81 for(i=0;i<(resx*resy);i++)
81 for(i=0;i<(resx*resy);i++)
82 {
82 {
83 SDLCD_putpixel(screen, i%resx, (i/resx), 0xFFFF);
83 SDLCD_putpixel(screen, i%resx, (i/resx), 0xFFFF);
84 }
84 }
85 SDL_AddTimer(10, sdl_refresh_timer, NULL);
85 SDL_AddTimer(10, sdl_refresh_timer, NULL);
86 }
86 }
87
87
88
88
89
89
90 int SDLCD_init()
90 int SDLCD_init()
91 {
91 {
92
92
93 }
93 }
94
94
95 void SDLCD_writereg(uint32_t reg,uint32_t data)
95 void SDLCD_writereg(uint32_t reg,uint32_t data)
96 {
96 {
97 switch (reg) {
97 switch (reg) {
98 case ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET:
98 case ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET:
99 if((data>=screen->w) || (data<0))
99 if((data>=screen->w) || (data<0))
100 printf("Warning printing out of bounds HORIZONTALGRAMADDRESSSET=%d",data);
100 printf("Warning printing out of bounds HORIZONTALGRAMADDRESSSET=%d",data);
101 SDLCD_Xpos = data;
101 SDLCD_Xpos = data;
102 break;
102 break;
103 case ILI9328_REGISTER_VERTICALGRAMADDRESSSET:
103 case ILI9328_REGISTER_VERTICALGRAMADDRESSSET:
104 if((data>=screen->h) || (data<0))
104 if((data>=screen->h) || (data<0))
105 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALGRAMADDRESSSET=%d",data);
105 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALGRAMADDRESSSET=%d",data);
106 SDLCD_Ypos = data;
106 SDLCD_Ypos = data;
107 break;
107 break;
108 case ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION:
108 case ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION:
109 if((data>=screen->w) || (data<0))
109 if((data>=screen->w) || (data<0))
110 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION=%d",data);
110 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION=%d",data);
111 SDLCD_XWinStrt = data;
111 SDLCD_XWinStrt = data;
112 break;
112 break;
113 case ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION:
113 case ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION:
114 if((data>=screen->w) || (data<0))
114 if((data>=screen->w) || (data<0))
115 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION=%d",data);
115 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION=%d",data);
116 SDLCD_XWinEnd = data;
116 SDLCD_XWinEnd = data;
117 break;
117 break;
118 case ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION:
118 case ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION:
119 if((data>=screen->h) || (data<0))
119 if((data>=screen->h) || (data<0))
120 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION=%d",data);
120 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION=%d",data);
121 SDLCD_YWinStrt = data;
121 SDLCD_YWinStrt = data;
122 break;
122 break;
123 case ILI9328_REGISTER_VERTICALADDRESSENDPOSITION:
123 case ILI9328_REGISTER_VERTICALADDRESSENDPOSITION:
124 if((data>=screen->h) || (data<0))
124 if((data>=screen->h) || (data<0))
125 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSENDPOSITION=%d",data);
125 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSENDPOSITION=%d",data);
126 SDLCD_YWinEnd = data;
126 SDLCD_YWinEnd = data;
127 break;
127 break;
128 default:
128 default:
129 break;
129 break;
130 }
130 }
131 }
131 }
132
132
133 uint32_t SDLCD_readreg(uint32_t reg)
133 uint32_t SDLCD_readreg(uint32_t reg)
134 {
134 {
135 return 0;
135 return 0;
136 }
136 }
137
137
138
138
139 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
139 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
140 {
140 {
141 int bpp = surface->format->BytesPerPixel;
141 int bpp = surface->format->BytesPerPixel;
142 /* Here p is the address to the pixel we want to set */
142 /* Here p is the address to the pixel we want to set */
143 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
143 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
144 switch(bpp) {
144 switch(bpp) {
145 case 1:
145 case 1:
146 *p = pixel;
146 *p = pixel;
147 break;
147 break;
148 case 2:
148 case 2:
149 *(Uint16 *)p = pixel;
149 *(Uint16 *)p = pixel;
150 break;
150 break;
151 case 3:
151 case 3:
152 if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
152 if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
153 p[0] = (pixel >> 16) & 0xff;
153 p[0] = (pixel >> 16) & 0xff;
154 p[1] = (pixel >> 8) & 0xff;
154 p[1] = (pixel >> 8) & 0xff;
155 p[2] = pixel & 0xff;
155 p[2] = pixel & 0xff;
156 } else {
156 } else {
157 p[0] = pixel & 0xff;
157 p[0] = pixel & 0xff;
158 p[1] = (pixel >> 8) & 0xff;
158 p[1] = (pixel >> 8) & 0xff;
159 p[2] = (pixel >> 16) & 0xff;
159 p[2] = (pixel >> 16) & 0xff;
160 }
160 }
161 break;
161 break;
162 case 4:
162 case 4:
163 *(Uint32 *)p = pixel;
163 *(Uint32 *)p = pixel;
164 break;
164 break;
165 }
165 }
166 }
166 }
167
167
168 void SDLCD_putpixel_16bpp(SDL_Surface *surface, int x, int y, Uint32 pixel)
168 void SDLCD_putpixel_16bpp(SDL_Surface *surface, int x, int y, Uint32 pixel)
169 {
169 {
170 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
170 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
171 *(Uint16 *)p = pixel;
171 *(Uint16 *)p = pixel;
172 }
172 }
173
173
174 Uint32 SDLCD_getpixel_16bpp(SDL_Surface *surface, int x, int y)
174 Uint32 SDLCD_getpixel_16bpp(SDL_Surface *surface, int x, int y)
175 {
175 {
176 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
176 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
177 return *(Uint16 *)p;
177 return *(Uint16 *)p;
178 }
178 }
179
179
180 Uint32 SDLCD_getpixel(SDL_Surface *surface, int x, int y)
180 Uint32 SDLCD_getpixel(SDL_Surface *surface, int x, int y)
181 {
181 {
182 int bpp = surface->format->BytesPerPixel;
182 int bpp = surface->format->BytesPerPixel;
183 /* Here p is the address to the pixel we want to retrieve */
183 /* Here p is the address to the pixel we want to retrieve */
184 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
184 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
185 switch(bpp) {
185 switch(bpp) {
186 case 1:
186 case 1:
187 return *p;
187 return *p;
188 case 2:
188 case 2:
189 return *(Uint16 *)p;
189 return *(Uint16 *)p;
190 case 3:
190 case 3:
191 if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
191 if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
192 return p[0] << 16 | p[1] << 8 | p[2];
192 return p[0] << 16 | p[1] << 8 | p[2];
193 else
193 else
194 return p[0] | p[1] << 8 | p[2] << 16;
194 return p[0] | p[1] << 8 | p[2] << 16;
195 case 4:
195 case 4:
196 return *(Uint32 *)p;
196 return *(Uint32 *)p;
197 default:
197 default:
198 return 0;
198 return 0;
199 }
199 }
200 /* shouldn’t happen, but avoids warnings */
200 /* shouldn’t happen, but avoids warnings */
201 }
201 }
202
202
203 void SDLCD_writeGRAM(void* buffer,uint32_t count)
203 void SDLCD_writeGRAM(void* buffer,uint32_t count)
204 {
204 {
205 int i=0;
205 int i=0;
206 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
206 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
207 u_int16_t* inptr=(u_int16_t*)buffer;
207 u_int16_t* inptr=(u_int16_t*)buffer;
208 if ( SDL_MUSTLOCK(screen) ) {
208 if ( SDL_MUSTLOCK(screen) ) {
209 if ( SDL_LockSurface(screen) < 0 ) {
209 if ( SDL_LockSurface(screen) < 0 ) {
210 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
210 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
211 return;
211 return;
212 }
212 }
213 }
213 }
214 for(i=0;i<count;i++)
214 for(i=0;i<count;i++)
215 {
215 {
216 SDLCD_putpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos,inptr[i]);
216 SDLCD_putpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos,inptr[i]);
217 SDLCD_Xpos+=1;
217 SDLCD_Xpos+=1;
218 ptr[i]=inptr[i];
218 ptr[i]=inptr[i];
219 if(SDLCD_Xpos>=SDLCD_XWinEnd)
219 if(SDLCD_Xpos>=SDLCD_XWinEnd)
220 {
220 {
221 SDLCD_Xpos=SDLCD_XWinStrt;
221 SDLCD_Xpos=SDLCD_XWinStrt;
222 SDLCD_Ypos+=1;
222 SDLCD_Ypos+=1;
223 }
223 }
224 if(SDLCD_Ypos>=SDLCD_YWinEnd)
224 if(SDLCD_Ypos>=SDLCD_YWinEnd)
225 {
225 {
226 SDLCD_Ypos=SDLCD_YWinStrt;
226 SDLCD_Ypos=SDLCD_YWinStrt;
227 }
227 }
228 }
228 }
229 if ( SDL_MUSTLOCK(screen) ) {
229 if ( SDL_MUSTLOCK(screen) ) {
230 SDL_UnlockSurface(screen);
230 SDL_UnlockSurface(screen);
231 }
231 }
232 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
232 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
233 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
233 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
234 }
234 }
235
235
236 void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count)
236 void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count)
237 {
237 {
238 int i=0;
238 int i=0;
239 u_int16_t* inptr=(u_int16_t*)buffer;
239 u_int16_t* inptr=(u_int16_t*)buffer;
240 if ( SDL_MUSTLOCK(screen) ) {
240 if ( SDL_MUSTLOCK(screen) ) {
241 if ( SDL_LockSurface(screen) < 0 ) {
241 if ( SDL_LockSurface(screen) < 0 ) {
242 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
242 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
243 return;
243 return;
244 }
244 }
245 }
245 }
246 for(i=0;i<count;i++)
246 for(i=0;i<count;i++)
247 {
247 {
248 *(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos)=inptr[i];
248 *(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos)=inptr[i];
249 SDLCD_Xpos+=1;
249 SDLCD_Xpos+=1;
250 if(SDLCD_Xpos>=SDLCD_XWinEnd)
250 if(SDLCD_Xpos>=SDLCD_XWinEnd)
251 {
251 {
252 SDLCD_Xpos=SDLCD_XWinStrt;
252 SDLCD_Xpos=SDLCD_XWinStrt;
253 SDLCD_Ypos+=1;
253 SDLCD_Ypos+=1;
254 }
254 }
255 if(SDLCD_Ypos>=SDLCD_YWinEnd)
255 if(SDLCD_Ypos>=SDLCD_YWinEnd)
256 {
256 {
257 SDLCD_Ypos=SDLCD_YWinStrt;
257 SDLCD_Ypos=SDLCD_YWinStrt;
258 }
258 }
259 }
259 }
260 if ( SDL_MUSTLOCK(screen) ) {
260 if ( SDL_MUSTLOCK(screen) ) {
261 SDL_UnlockSurface(screen);
261 SDL_UnlockSurface(screen);
262 }
262 }
263 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
263 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
264 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
264 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
265 }
265 }
266
266
267 void SDLCD_readGRAM_16bpp(void* buffer,uint32_t count)
267 void SDLCD_readGRAM_16bpp(void* buffer,uint32_t count)
268 {
268 {
269 int i=0;
269 int i=0;
270 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
270 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
271 u_int16_t* inptr=(u_int16_t*)buffer;
271 u_int16_t* inptr=(u_int16_t*)buffer;
272 for(i=0;i<count;i++)
272 for(i=0;i<count;i++)
273 {
273 {
274 inptr[i]=*(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos);
274 inptr[i]=*(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos);
275 SDLCD_Xpos+=1;
275 SDLCD_Xpos+=1;
276 ptr[i]=inptr[i];
276 ptr[i]=inptr[i];
277 if(SDLCD_Xpos>=SDLCD_XWinEnd)
277 if(SDLCD_Xpos>=SDLCD_XWinEnd)
278 {
278 {
279 SDLCD_Xpos=SDLCD_XWinStrt;
279 SDLCD_Xpos=SDLCD_XWinStrt;
280 SDLCD_Ypos+=1;
280 SDLCD_Ypos+=1;
281 }
281 }
282 if(SDLCD_Ypos>=SDLCD_YWinEnd)
282 if(SDLCD_Ypos>=SDLCD_YWinEnd)
283 {
283 {
284 SDLCD_Ypos=SDLCD_YWinStrt;
284 SDLCD_Ypos=SDLCD_YWinStrt;
285 }
285 }
286 }
286 }
287
287
288 }
288 }
289
289
290 void SDLCD_readGRAM(void* buffer,uint32_t count)
290 void SDLCD_readGRAM(void* buffer,uint32_t count)
291 {
291 {
292 int i=0;
292 int i=0;
293 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
293 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
294 u_int16_t* inptr=(u_int16_t*)buffer;
294 u_int16_t* inptr=(u_int16_t*)buffer;
295 for(i=0;i<count;i++)
295 for(i=0;i<count;i++)
296 {
296 {
297 inptr[i]=SDLCD_getpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos);
297 inptr[i]=SDLCD_getpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos);
298 SDLCD_Xpos+=1;
298 SDLCD_Xpos+=1;
299 ptr[i]=inptr[i];
299 ptr[i]=inptr[i];
300 if(SDLCD_Xpos>=SDLCD_XWinEnd)
300 if(SDLCD_Xpos>=SDLCD_XWinEnd)
301 {
301 {
302 SDLCD_Xpos=SDLCD_XWinStrt;
302 SDLCD_Xpos=SDLCD_XWinStrt;
303 SDLCD_Ypos+=1;
303 SDLCD_Ypos+=1;
304 }
304 }
305 if(SDLCD_Ypos>=SDLCD_YWinEnd)
305 if(SDLCD_Ypos>=SDLCD_YWinEnd)
306 {
306 {
307 SDLCD_Ypos=SDLCD_YWinStrt;
307 SDLCD_Ypos=SDLCD_YWinStrt;
308 }
308 }
309 }
309 }
310
310
311 }
311 }
312
312
313
313
314
314
315
315
316
316
317
317
318
318
319
319
320
320
321
321
322
322
323
323
324
324
325
325
326
326
327
327
328
328
329
329
330
330
331
331
332
332
333
333
@@ -1,454 +1,454
1 #include <stdio.h>
1 #include <stdio.h>
2 #include <stm32f4xx.h>
2 #include <stm32f4xx.h>
3
3
4 void NMI_Handler(void)
4 void NMI_Handler(void)
5 {
5 {
6 printf("NMI_Handler\n");
6 printf("NMI_Handler\n");
7 }
7 }
8
8
9 void HardFault_Handler(void)
9 void HardFault_Handler(void)
10 {
10 {
11 printf("HardFault_Handler\n");
11 printf("HardFault_Handler\n");
12 }
12 }
13
13
14 void MemManage_Handler(void)
14 void MemManage_Handler(void)
15 {
15 {
16 printf("MemManage_Handler\n");
16 printf("MemManage_Handler\n");
17 }
17 }
18
18
19 void BusFault_Handler(void)
19 void BusFault_Handler(void)
20 {
20 {
21 printf("BusFault_Handler\n");
21 printf("BusFault_Handler\n");
22 }
22 }
23
23
24 void UsageFault_Handler(void)
24 void UsageFault_Handler(void)
25 {
25 {
26 printf("UsageFault_Handler\n");
26 printf("UsageFault_Handler\n");
27 }
27 }
28
28
29 void SVC_Handler(void)
29 void SVC_Handler(void)
30 {
30 {
31 // __set_CONTROL(2);
31 // __set_CONTROL(2);
32 // printf("SVC_Handler\n");
32 printf("SVC_Handler\n");
33 }
33 }
34
34
35 void DebugMon_Handler(void)
35 void DebugMon_Handler(void)
36 {
36 {
37 printf("DebugMon_Handler\n");
37 printf("DebugMon_Handler\n");
38 }
38 }
39
39
40 void PendSV_Handler(void)
40 void PendSV_Handler(void)
41 {
41 {
42 printf("PendSV_Handler\n");
42 printf("PendSV_Handler\n");
43 }
43 }
44
44
45 void WWDG_IRQHandler(void)
45 void WWDG_IRQHandler(void)
46 {
46 {
47 printf("WWDG_IRQHandler\n");
47 printf("WWDG_IRQHandler\n");
48 }
48 }
49
49
50 void PVD_IRQHandler(void)
50 void PVD_IRQHandler(void)
51 {
51 {
52 printf("PVD_IRQHandler\n");
52 printf("PVD_IRQHandler\n");
53 }
53 }
54
54
55 void TAMP_STAMP_IRQHandler(void)
55 void TAMP_STAMP_IRQHandler(void)
56 {
56 {
57 printf("TAMP_STAMP_IRQHandler\n");
57 printf("TAMP_STAMP_IRQHandler\n");
58 }
58 }
59
59
60 void RTC_WKUP_IRQHandler(void)
60 void RTC_WKUP_IRQHandler(void)
61 {
61 {
62 printf("RTC_WKUP_IRQHandler\n");
62 printf("RTC_WKUP_IRQHandler\n");
63 }
63 }
64
64
65 void FLASH_IRQHandler(void)
65 void FLASH_IRQHandler(void)
66 {
66 {
67 printf("FLASH_IRQHandler\n");
67 printf("FLASH_IRQHandler\n");
68 }
68 }
69
69
70 void RCC_IRQHandler(void)
70 void RCC_IRQHandler(void)
71 {
71 {
72 printf("RCC_IRQHandler\n");
72 printf("RCC_IRQHandler\n");
73 }
73 }
74
74
75 void EXTI0_IRQHandler(void)
75 void EXTI0_IRQHandler(void)
76 {
76 {
77 printf("EXTI0_IRQHandler\n");
77 printf("EXTI0_IRQHandler\n");
78 }
78 }
79
79
80 void EXTI1_IRQHandler(void)
80 void EXTI1_IRQHandler(void)
81 {
81 {
82 printf("EXTI1_IRQHandler\n");
82 printf("EXTI1_IRQHandler\n");
83 }
83 }
84
84
85 void EXTI2_IRQHandler(void)
85 void EXTI2_IRQHandler(void)
86 {
86 {
87 printf("EXTI2_IRQHandler\n");
87 printf("EXTI2_IRQHandler\n");
88 }
88 }
89
89
90 void EXTI3_IRQHandler(void)
90 void EXTI3_IRQHandler(void)
91 {
91 {
92 printf("EXTI3_IRQHandler\n");
92 printf("EXTI3_IRQHandler\n");
93 }
93 }
94
94
95 void EXTI4_IRQHandler(void)
95 void EXTI4_IRQHandler(void)
96 {
96 {
97 printf("EXTI4_IRQHandler\n");
97 printf("EXTI4_IRQHandler\n");
98 }
98 }
99
99
100 void DMA1_Stream0_IRQHandler(void)
100 void DMA1_Stream0_IRQHandler(void)
101 {
101 {
102 printf("DMA1_Stream0_IRQHandler\n");
102 printf("DMA1_Stream0_IRQHandler\n");
103 }
103 }
104
104
105 void DMA1_Stream1_IRQHandler(void)
105 void DMA1_Stream1_IRQHandler(void)
106 {
106 {
107 printf("DMA1_Stream1_IRQHandler\n");
107 printf("DMA1_Stream1_IRQHandler\n");
108 }
108 }
109
109
110 void DMA1_Stream2_IRQHandler(void)
110 void DMA1_Stream2_IRQHandler(void)
111 {
111 {
112 printf("DMA1_Stream2_IRQHandler\n");
112 printf("DMA1_Stream2_IRQHandler\n");
113 }
113 }
114
114
115 void DMA1_Stream3_IRQHandler(void)
115 void DMA1_Stream3_IRQHandler(void)
116 {
116 {
117 printf("DMA1_Stream3_IRQHandler\n");
117 printf("DMA1_Stream3_IRQHandler\n");
118 }
118 }
119
119
120 void DMA1_Stream4_IRQHandler(void)
120 void DMA1_Stream4_IRQHandler(void)
121 {
121 {
122 printf("DMA1_Stream4_IRQHandler\n");
122 printf("DMA1_Stream4_IRQHandler\n");
123 }
123 }
124
124
125 void DMA1_Stream5_IRQHandler(void)
125 void DMA1_Stream5_IRQHandler(void)
126 {
126 {
127 printf("DMA1_Stream5_IRQHandler\n");
127 printf("DMA1_Stream5_IRQHandler\n");
128 }
128 }
129
129
130 void DMA1_Stream6_IRQHandler(void)
130 void DMA1_Stream6_IRQHandler(void)
131 {
131 {
132 printf("DMA1_Stream6_IRQHandler\n");
132 printf("DMA1_Stream6_IRQHandler\n");
133 }
133 }
134
134
135 void ADC_IRQHandler(void)
135 void ADC_IRQHandler(void)
136 {
136 {
137 printf("ADC_IRQHandler\n");
137 printf("ADC_IRQHandler\n");
138 }
138 }
139
139
140 void CAN1_TX_IRQHandler(void)
140 void CAN1_TX_IRQHandler(void)
141 {
141 {
142 printf("CAN1_TX_IRQHandler\n");
142 printf("CAN1_TX_IRQHandler\n");
143 }
143 }
144
144
145 void CAN1_RX0_IRQHandler(void)
145 void CAN1_RX0_IRQHandler(void)
146 {
146 {
147 printf("CAN1_RX0_IRQHandler\n");
147 printf("CAN1_RX0_IRQHandler\n");
148 }
148 }
149
149
150 void CAN1_RX1_IRQHandler(void)
150 void CAN1_RX1_IRQHandler(void)
151 {
151 {
152 printf("CAN1_RX1_IRQHandler\n");
152 printf("CAN1_RX1_IRQHandler\n");
153 }
153 }
154
154
155 void CAN1_SCE_IRQHandler(void)
155 void CAN1_SCE_IRQHandler(void)
156 {
156 {
157 printf("CAN1_SCE_IRQHandler\n");
157 printf("CAN1_SCE_IRQHandler\n");
158 }
158 }
159
159
160 void EXTI9_5_IRQHandler(void)
160 void EXTI9_5_IRQHandler(void)
161 {
161 {
162 printf("EXTI9_5_IRQHandler\n");
162 printf("EXTI9_5_IRQHandler\n");
163 }
163 }
164
164
165 void TIM1_BRK_TIM9_IRQHandler(void)
165 void TIM1_BRK_TIM9_IRQHandler(void)
166 {
166 {
167 printf("TIM1_BRK_TIM9_IRQHandler\n");
167 printf("TIM1_BRK_TIM9_IRQHandler\n");
168 }
168 }
169
169
170 void TIM1_UP_TIM10_IRQHandler(void)
170 void TIM1_UP_TIM10_IRQHandler(void)
171 {
171 {
172 printf("TIM1_UP_TIM10_IRQHandler\n");
172 printf("TIM1_UP_TIM10_IRQHandler\n");
173 }
173 }
174
174
175 void TIM1_TRG_COM_TIM11_IRQHandlerIM11(void)
175 void TIM1_TRG_COM_TIM11_IRQHandlerIM11(void)
176 {
176 {
177 printf("TIM1_TRG_COM_TIM11_IRQHandlerIM11");
177 printf("TIM1_TRG_COM_TIM11_IRQHandlerIM11");
178 }
178 }
179
179
180 void TIM1_CC_IRQHandler(void)
180 void TIM1_CC_IRQHandler(void)
181 {
181 {
182 printf("TIM1_CC_IRQHandler\n");
182 printf("TIM1_CC_IRQHandler\n");
183 }
183 }
184
184
185 void TIM2_IRQHandler(void)
185 void TIM2_IRQHandler(void)
186 {
186 {
187 printf("TIM2_IRQHandler\n");
187 printf("TIM2_IRQHandler\n");
188 }
188 }
189
189
190 void TIM3_IRQHandler(void)
190 void TIM3_IRQHandler(void)
191 {
191 {
192 printf("TIM3_IRQHandler\n");
192 printf("TIM3_IRQHandler\n");
193 }
193 }
194
194
195 void TIM4_IRQHandler(void)
195 void TIM4_IRQHandler(void)
196 {
196 {
197 printf("TIM4_IRQHandler\n");
197 printf("TIM4_IRQHandler\n");
198 }
198 }
199
199
200 void I2C1_EV_IRQHandler(void)
200 void I2C1_EV_IRQHandler(void)
201 {
201 {
202 printf("I2C1_EV_IRQHandler\n");
202 printf("I2C1_EV_IRQHandler\n");
203 }
203 }
204
204
205 void I2C1_ER_IRQHandler(void)
205 void I2C1_ER_IRQHandler(void)
206 {
206 {
207 printf("I2C1_ER_IRQHandler\n");
207 printf("I2C1_ER_IRQHandler\n");
208 }
208 }
209
209
210 void I2C2_EV_IRQHandler(void)
210 void I2C2_EV_IRQHandler(void)
211 {
211 {
212 printf("I2C2_EV_IRQHandler\n");
212 printf("I2C2_EV_IRQHandler\n");
213 }
213 }
214
214
215 void I2C2_ER_IRQHandler(void)
215 void I2C2_ER_IRQHandler(void)
216 {
216 {
217 printf("I2C2_ER_IRQHandler\n");
217 printf("I2C2_ER_IRQHandler\n");
218 }
218 }
219
219
220 void SPI1_IRQHandler(void)
220 void SPI1_IRQHandler(void)
221 {
221 {
222 printf("SPI1_IRQHandler\n");
222 printf("SPI1_IRQHandler\n");
223 }
223 }
224
224
225 void SPI2_IRQHandler(void)
225 void SPI2_IRQHandler(void)
226 {
226 {
227 printf("SPI2_IRQHandler\n");
227 printf("SPI2_IRQHandler\n");
228 }
228 }
229
229
230 void USART1_IRQHandler(void)
230 void USART1_IRQHandler(void)
231 {
231 {
232 printf("USART1_IRQHandler\n");
232 printf("USART1_IRQHandler\n");
233 }
233 }
234
234
235 void USART2_IRQHandler(void)
235 void USART2_IRQHandler(void)
236 {
236 {
237 printf("USART2_IRQHandler\n");
237 printf("USART2_IRQHandler\n");
238 }
238 }
239
239
240 void USART3_IRQHandler(void)
240 void USART3_IRQHandler(void)
241 {
241 {
242 printf("USART3_IRQHandler\n");
242 printf("USART3_IRQHandler\n");
243 }
243 }
244
244
245 void EXTI15_10_IRQHandler(void)
245 void EXTI15_10_IRQHandler(void)
246 {
246 {
247 printf("EXTI15_10_IRQHandler\n");
247 printf("EXTI15_10_IRQHandler\n");
248 }
248 }
249
249
250 void RTC_Alarm_IRQHandler(void)
250 void RTC_Alarm_IRQHandler(void)
251 {
251 {
252 printf("RTC_Alarm_IRQHandler\n");
252 printf("RTC_Alarm_IRQHandler\n");
253 }
253 }
254
254
255 void OTG_FS_WKUP_IRQHandler(void)
255 void OTG_FS_WKUP_IRQHandler(void)
256 {
256 {
257 printf("OTG_FS_WKUP_IRQHandler\n");
257 printf("OTG_FS_WKUP_IRQHandler\n");
258 }
258 }
259
259
260 void TIM8_BRK_TIM12_IRQHandler(void)
260 void TIM8_BRK_TIM12_IRQHandler(void)
261 {
261 {
262 printf("TIM8_BRK_TIM12_IRQHandler\n");
262 printf("TIM8_BRK_TIM12_IRQHandler\n");
263 }
263 }
264
264
265 void TIM8_UP_TIM13_IRQHandler(void)
265 void TIM8_UP_TIM13_IRQHandler(void)
266 {
266 {
267 printf("TIM8_UP_TIM13_IRQHandler\n");
267 printf("TIM8_UP_TIM13_IRQHandler\n");
268 }
268 }
269
269
270 void TIM8_TRG_COM_TIM14_IRQHandlerIM14(void)
270 void TIM8_TRG_COM_TIM14_IRQHandlerIM14(void)
271 {
271 {
272 printf("TIM8_TRG_COM_TIM14_IRQHandlerIM14");
272 printf("TIM8_TRG_COM_TIM14_IRQHandlerIM14");
273 }
273 }
274
274
275 void TIM8_CC_IRQHandler(void)
275 void TIM8_CC_IRQHandler(void)
276 {
276 {
277 printf("TIM8_CC_IRQHandler\n");
277 printf("TIM8_CC_IRQHandler\n");
278 }
278 }
279
279
280 void DMA1_Stream7_IRQHandler(void)
280 void DMA1_Stream7_IRQHandler(void)
281 {
281 {
282 printf("DMA1_Stream7_IRQHandler\n");
282 printf("DMA1_Stream7_IRQHandler\n");
283 }
283 }
284
284
285 void FSMC_IRQHandler(void)
285 void FSMC_IRQHandler(void)
286 {
286 {
287 printf("FSMC_IRQHandler\n");
287 printf("FSMC_IRQHandler\n");
288 }
288 }
289
289
290 void SDIO_IRQHandler(void)
290 void SDIO_IRQHandler(void)
291 {
291 {
292 printf("SDIO_IRQHandler\n");
292 printf("SDIO_IRQHandler\n");
293 }
293 }
294
294
295 void TIM5_IRQHandler(void)
295 void TIM5_IRQHandler(void)
296 {
296 {
297 printf("TIM5_IRQHandler\n");
297 printf("TIM5_IRQHandler\n");
298 }
298 }
299
299
300 void SPI3_IRQHandler(void)
300 void SPI3_IRQHandler(void)
301 {
301 {
302 printf("SPI3_IRQHandler\n");
302 printf("SPI3_IRQHandler\n");
303 }
303 }
304
304
305 void UART4_IRQHandler(void)
305 void UART4_IRQHandler(void)
306 {
306 {
307 printf("UART4_IRQHandler\n");
307 printf("UART4_IRQHandler\n");
308 }
308 }
309
309
310 void UART5_IRQHandler(void)
310 void UART5_IRQHandler(void)
311 {
311 {
312 printf("UART5_IRQHandler\n");
312 printf("UART5_IRQHandler\n");
313 }
313 }
314
314
315 void TIM6_DAC_IRQHandler(void)
315 void TIM6_DAC_IRQHandler(void)
316 {
316 {
317 printf("TIM6_DAC_IRQHandler\n");
317 printf("TIM6_DAC_IRQHandler\n");
318 }
318 }
319
319
320 void TIM7_IRQHandler(void)
320 void TIM7_IRQHandler(void)
321 {
321 {
322 printf("TIM7_IRQHandler\n");
322 printf("TIM7_IRQHandler\n");
323 }
323 }
324
324
325 void DMA2_Stream0_IRQHandler(void)
325 void DMA2_Stream0_IRQHandler(void)
326 {
326 {
327 printf("DMA2_Stream0_IRQHandler\n");
327 printf("DMA2_Stream0_IRQHandler\n");
328 }
328 }
329
329
330 void DMA2_Stream1_IRQHandler(void)
330 void DMA2_Stream1_IRQHandler(void)
331 {
331 {
332 printf("DMA2_Stream1_IRQHandler\n");
332 printf("DMA2_Stream1_IRQHandler\n");
333 }
333 }
334
334
335 void DMA2_Stream2_IRQHandler(void)
335 void DMA2_Stream2_IRQHandler(void)
336 {
336 {
337 printf("DMA2_Stream2_IRQHandler\n");
337 printf("DMA2_Stream2_IRQHandler\n");
338 }
338 }
339
339
340 void DMA2_Stream3_IRQHandler(void)
340 void DMA2_Stream3_IRQHandler(void)
341 {
341 {
342 printf("DMA2_Stream3_IRQHandler\n");
342 printf("DMA2_Stream3_IRQHandler\n");
343 }
343 }
344
344
345 void DMA2_Stream4_IRQHandler(void)
345 void DMA2_Stream4_IRQHandler(void)
346 {
346 {
347 printf("DMA2_Stream4_IRQHandler\n");
347 printf("DMA2_Stream4_IRQHandler\n");
348 }
348 }
349
349
350 void ETH_IRQHandler(void)
350 void ETH_IRQHandler(void)
351 {
351 {
352 printf("ETH_IRQHandler\n");
352 printf("ETH_IRQHandler\n");
353 }
353 }
354
354
355 void ETH_WKUP_IRQHandler(void)
355 void ETH_WKUP_IRQHandler(void)
356 {
356 {
357 printf("ETH_WKUP_IRQHandler\n");
357 printf("ETH_WKUP_IRQHandler\n");
358 }
358 }
359
359
360 void CAN2_TX_IRQHandler(void)
360 void CAN2_TX_IRQHandler(void)
361 {
361 {
362 printf("CAN2_TX_IRQHandler\n");
362 printf("CAN2_TX_IRQHandler\n");
363 }
363 }
364
364
365 void CAN2_RX0_IRQHandler(void)
365 void CAN2_RX0_IRQHandler(void)
366 {
366 {
367 printf("CAN2_RX0_IRQHandler\n");
367 printf("CAN2_RX0_IRQHandler\n");
368 }
368 }
369
369
370 void CAN2_RX1_IRQHandler(void)
370 void CAN2_RX1_IRQHandler(void)
371 {
371 {
372 printf("CAN2_RX1_IRQHandler\n");
372 printf("CAN2_RX1_IRQHandler\n");
373 }
373 }
374
374
375 void CAN2_SCE_IRQHandler(void)
375 void CAN2_SCE_IRQHandler(void)
376 {
376 {
377 printf("CAN2_SCE_IRQHandler\n");
377 printf("CAN2_SCE_IRQHandler\n");
378 }
378 }
379
379
380 void OTG_FS_IRQHandler(void)
380 void OTG_FS_IRQHandler(void)
381 {
381 {
382 printf("OTG_FS_IRQHandler\n");
382 printf("OTG_FS_IRQHandler\n");
383 }
383 }
384
384
385 void DMA2_Stream5_IRQHandler(void)
385 void DMA2_Stream5_IRQHandler(void)
386 {
386 {
387 printf("DMA2_Stream5_IRQHandler\n");
387 printf("DMA2_Stream5_IRQHandler\n");
388 }
388 }
389
389
390 void DMA2_Stream6_IRQHandler(void)
390 void DMA2_Stream6_IRQHandler(void)
391 {
391 {
392 printf("DMA2_Stream6_IRQHandler\n");
392 printf("DMA2_Stream6_IRQHandler\n");
393 }
393 }
394
394
395 void DMA2_Stream7_IRQHandler(void)
395 void DMA2_Stream7_IRQHandler(void)
396 {
396 {
397 printf("DMA2_Stream7_IRQHandler\n");
397 printf("DMA2_Stream7_IRQHandler\n");
398 }
398 }
399
399
400 void USART6_IRQHandler(void)
400 void USART6_IRQHandler(void)
401 {
401 {
402 printf("USART6_IRQHandler\n");
402 printf("USART6_IRQHandler\n");
403 }
403 }
404
404
405 void I2C3_EV_IRQHandler(void)
405 void I2C3_EV_IRQHandler(void)
406 {
406 {
407 printf("I2C3_EV_IRQHandler\n");
407 printf("I2C3_EV_IRQHandler\n");
408 }
408 }
409
409
410 void I2C3_ER_IRQHandler(void)
410 void I2C3_ER_IRQHandler(void)
411 {
411 {
412 printf("I2C3_ER_IRQHandler\n");
412 printf("I2C3_ER_IRQHandler\n");
413 }
413 }
414
414
415 void OTG_HS_EP1_OUT_IRQHandler(void)
415 void OTG_HS_EP1_OUT_IRQHandler(void)
416 {
416 {
417 printf("OTG_HS_EP1_OUT_IRQHandler\n");
417 printf("OTG_HS_EP1_OUT_IRQHandler\n");
418 }
418 }
419
419
420 void OTG_HS_EP1_IN_IRQHandler(void)
420 void OTG_HS_EP1_IN_IRQHandler(void)
421 {
421 {
422 printf("OTG_HS_EP1_IN_IRQHandler\n");
422 printf("OTG_HS_EP1_IN_IRQHandler\n");
423 }
423 }
424
424
425 void OTG_HS_WKUP_IRQHandler(void)
425 void OTG_HS_WKUP_IRQHandler(void)
426 {
426 {
427 printf("OTG_HS_WKUP_IRQHandler\n");
427 printf("OTG_HS_WKUP_IRQHandler\n");
428 }
428 }
429
429
430 void OTG_HS_IRQHandler(void)
430 void OTG_HS_IRQHandler(void)
431 {
431 {
432 printf("OTG_HS_IRQHandler\n");
432 printf("OTG_HS_IRQHandler\n");
433 }
433 }
434
434
435 void DCMI_IRQHandler(void)
435 void DCMI_IRQHandler(void)
436 {
436 {
437 printf("DCMI_IRQHandler\n");
437 printf("DCMI_IRQHandler\n");
438 }
438 }
439
439
440 void CRYP_IRQHandler(void)
440 void CRYP_IRQHandler(void)
441 {
441 {
442 printf("CRYP_IRQHandler\n");
442 printf("CRYP_IRQHandler\n");
443 }
443 }
444
444
445 void HASH_RNG_IRQHandler(void)
445 void HASH_RNG_IRQHandler(void)
446 {
446 {
447 printf("HASH_RNG_IRQHandler\n");
447 printf("HASH_RNG_IRQHandler\n");
448 }
448 }
449
449
450 void FPU_IRQHandler(void)
450 void FPU_IRQHandler(void)
451 {
451 {
452 printf("FPU_IRQHandler\n");
452 printf("FPU_IRQHandler\n");
453 }
453 }
454
454
@@ -1,10 +1,13
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3
3
4 SOURCES += gpio.c
4 SOURCES += gpio.c
5
5
6 UCMODEL=stm32f4
6 UCMODEL=stm32f4
7
7
8 HEADERS += \
9 ../../../include/PERIPHERALS/gpio.h
8
10
9
11
10
12
13
@@ -1,10 +1,13
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3
3
4 SOURCES += i2c.c
4 SOURCES += i2c.c
5
5
6
6
7 UCMODEL=stm32f4
7 UCMODEL=stm32f4
8
8
9 HEADERS += \
10 ../../../include/PERIPHERALS/i2c.h
9
11
10
12
13
@@ -1,6 +1,9
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3
3
4 SOURCES += sdcard-sdio.c
4 SOURCES += sdcard-sdio.c
5
5
6 UCMODEL=stm32f4
6 UCMODEL=stm32f4
7
8 HEADERS += \
9 ../../../include/FLASH/sdcard-sdio.h
@@ -1,8 +1,11
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3
3
4 SOURCES += spi.c
4 SOURCES += spi.c
5
5
6
6
7 UCMODEL=stm32f4
7 UCMODEL=stm32f4
8
8
9 HEADERS += \
10 ../../../include/PERIPHERALS/spi.h
11
@@ -1,6 +1,10
1 TEMPLATE = lib
1 TEMPLATE = lib
2 CONFIG += libuc2lib
2 CONFIG += libuc2lib
3
3
4 SOURCES += uart.c
4 SOURCES += uart.c
5
5
6 UCMODEL=stm32f4
6 UCMODEL=stm32f4
7
8 HEADERS += \
9 ../../../include/PERIPHERALS/uart.h
10
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (557 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now