##// 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 1 # Doxyfile 1.8.3.1
2 2
3 3 # This file describes the settings to be used by the documentation system
4 4 # doxygen (www.doxygen.org) for a project
5 5 #
6 6 # All text after a hash (#) is considered a comment and will be ignored
7 7 # The format is:
8 8 # TAG = value [value, ...]
9 9 # For lists items can also be appended using:
10 10 # TAG += value [value, ...]
11 11 # Values that contain spaces should be placed between quotes (" ")
12 12
13 13 #---------------------------------------------------------------------------
14 14 # Project related configuration options
15 15 #---------------------------------------------------------------------------
16 16
17 17 # This tag specifies the encoding used for all characters in the config file
18 18 # that follow. The default is UTF-8 which is also the encoding used for all
19 19 # text before the first occurrence of this tag. Doxygen uses libiconv (or the
20 20 # iconv built into libc) for the transcoding. See
21 21 # http://www.gnu.org/software/libiconv for the list of possible encodings.
22 22
23 23 DOXYFILE_ENCODING = UTF-8
24 24
25 25 # The PROJECT_NAME tag is a single word (or sequence of words) that should
26 26 # identify the project. Note that if you do not use Doxywizard you need
27 27 # to put quotes around the project name if it contains spaces.
28 28
29 29 PROJECT_NAME = libuc2
30 30
31 31 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
32 32 # This could be handy for archiving the generated documentation or
33 33 # if some version control system is used.
34 34
35 35 PROJECT_NUMBER =
36 36
37 37 # Using the PROJECT_BRIEF tag one can provide an optional one line description
38 38 # for a project that appears at the top of each page and should give viewer
39 39 # a quick idea about the purpose of the project. Keep the description short.
40 40
41 41 PROJECT_BRIEF =
42 42
43 43 # With the PROJECT_LOGO tag one can specify an logo or icon that is
44 44 # included in the documentation. The maximum height of the logo should not
45 45 # exceed 55 pixels and the maximum width should not exceed 200 pixels.
46 46 # Doxygen will copy the logo to the output directory.
47 47
48 48 PROJECT_LOGO =
49 49
50 50 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
51 51 # base path where the generated documentation will be put.
52 52 # If a relative path is entered, it will be relative to the location
53 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 57 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
58 58 # 4096 sub-directories (in 2 levels) under the output directory of each output
59 59 # format and will distribute the generated files over these directories.
60 60 # Enabling this option can be useful when feeding doxygen a huge amount of
61 61 # source files, where putting all generated files in the same directory would
62 62 # otherwise cause performance problems for the file system.
63 63
64 64 CREATE_SUBDIRS = NO
65 65
66 66 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
67 67 # documentation generated by doxygen is written. Doxygen will use this
68 68 # information to generate all constant output in the proper language.
69 69 # The default language is English, other supported languages are:
70 70 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
71 71 # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
72 72 # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
73 73 # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
74 74 # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
75 75 # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
76 76
77 77 OUTPUT_LANGUAGE = English
78 78
79 79 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
80 80 # include brief member descriptions after the members that are listed in
81 81 # the file and class documentation (similar to JavaDoc).
82 82 # Set to NO to disable this.
83 83
84 84 BRIEF_MEMBER_DESC = YES
85 85
86 86 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
87 87 # the brief description of a member or function before the detailed description.
88 88 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
89 89 # brief descriptions will be completely suppressed.
90 90
91 91 REPEAT_BRIEF = YES
92 92
93 93 # This tag implements a quasi-intelligent brief description abbreviator
94 94 # that is used to form the text in various listings. Each string
95 95 # in this list, if found as the leading text of the brief description, will be
96 96 # stripped from the text and the result after processing the whole list, is
97 97 # used as the annotated text. Otherwise, the brief description is used as-is.
98 98 # If left blank, the following values are used ("$name" is automatically
99 99 # replaced with the name of the entity): "The $name class" "The $name widget"
100 100 # "The $name file" "is" "provides" "specifies" "contains"
101 101 # "represents" "a" "an" "the"
102 102
103 103 ABBREVIATE_BRIEF = "The $name class" \
104 104 "The $name widget" \
105 105 "The $name file" \
106 106 is \
107 107 provides \
108 108 specifies \
109 109 contains \
110 110 represents \
111 111 a \
112 112 an \
113 113 the
114 114
115 115 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
116 116 # Doxygen will generate a detailed section even if there is only a brief
117 117 # description.
118 118
119 119 ALWAYS_DETAILED_SEC = NO
120 120
121 121 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
122 122 # inherited members of a class in the documentation of that class as if those
123 123 # members were ordinary class members. Constructors, destructors and assignment
124 124 # operators of the base classes will not be shown.
125 125
126 126 INLINE_INHERITED_MEMB = NO
127 127
128 128 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
129 129 # path before files name in the file list and in the header files. If set
130 130 # to NO the shortest path that makes the file name unique will be used.
131 131
132 132 FULL_PATH_NAMES = YES
133 133
134 134 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
135 135 # can be used to strip a user-defined part of the path. Stripping is
136 136 # only done if one of the specified strings matches the left-hand part of
137 137 # the path. The tag can be used to show relative paths in the file list.
138 138 # If left blank the directory from which doxygen is run is used as the
139 139 # path to strip. Note that you specify absolute paths here, but also
140 140 # relative paths, which will be relative from the directory where doxygen is
141 141 # started.
142 142
143 143 STRIP_FROM_PATH =
144 144
145 145 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
146 146 # the path mentioned in the documentation of a class, which tells
147 147 # the reader which header file to include in order to use a class.
148 148 # If left blank only the name of the header file containing the class
149 149 # definition is used. Otherwise one should specify the include paths that
150 150 # are normally passed to the compiler using the -I flag.
151 151
152 152 STRIP_FROM_INC_PATH =
153 153
154 154 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
155 155 # (but less readable) file names. This can be useful if your file system
156 156 # doesn't support long names like on DOS, Mac, or CD-ROM.
157 157
158 158 SHORT_NAMES = NO
159 159
160 160 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
161 161 # will interpret the first line (until the first dot) of a JavaDoc-style
162 162 # comment as the brief description. If set to NO, the JavaDoc
163 163 # comments will behave just like regular Qt-style comments
164 164 # (thus requiring an explicit @brief command for a brief description.)
165 165
166 166 JAVADOC_AUTOBRIEF = NO
167 167
168 168 # If the QT_AUTOBRIEF tag is set to YES then Doxygen will
169 169 # interpret the first line (until the first dot) of a Qt-style
170 170 # comment as the brief description. If set to NO, the comments
171 171 # will behave just like regular Qt-style comments (thus requiring
172 172 # an explicit \brief command for a brief description.)
173 173
174 174 QT_AUTOBRIEF = NO
175 175
176 176 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
177 177 # treat a multi-line C++ special comment block (i.e. a block of //! or ///
178 178 # comments) as a brief description. This used to be the default behaviour.
179 179 # The new default is to treat a multi-line C++ comment block as a detailed
180 180 # description. Set this tag to YES if you prefer the old behaviour instead.
181 181
182 182 MULTILINE_CPP_IS_BRIEF = NO
183 183
184 184 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
185 185 # member inherits the documentation from any documented member that it
186 186 # re-implements.
187 187
188 188 INHERIT_DOCS = YES
189 189
190 190 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
191 191 # a new page for each member. If set to NO, the documentation of a member will
192 192 # be part of the file/class/namespace that contains it.
193 193
194 194 SEPARATE_MEMBER_PAGES = NO
195 195
196 196 # The TAB_SIZE tag can be used to set the number of spaces in a tab.
197 197 # Doxygen uses this value to replace tabs by spaces in code fragments.
198 198
199 199 TAB_SIZE = 4
200 200
201 201 # This tag can be used to specify a number of aliases that acts
202 202 # as commands in the documentation. An alias has the form "name=value".
203 203 # For example adding "sideeffect=\par Side Effects:\n" will allow you to
204 204 # put the command \sideeffect (or @sideeffect) in the documentation, which
205 205 # will result in a user-defined paragraph with heading "Side Effects:".
206 206 # You can put \n's in the value part of an alias to insert newlines.
207 207
208 208 ALIASES =
209 209
210 210 # This tag can be used to specify a number of word-keyword mappings (TCL only).
211 211 # A mapping has the form "name=value". For example adding
212 212 # "class=itcl::class" will allow you to use the command class in the
213 213 # itcl::class meaning.
214 214
215 215 TCL_SUBST =
216 216
217 217 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
218 218 # sources only. Doxygen will then generate output that is more tailored for C.
219 219 # For instance, some of the names that are used will be different. The list
220 220 # of all members will be omitted, etc.
221 221
222 222 OPTIMIZE_OUTPUT_FOR_C = YES
223 223
224 224 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
225 225 # sources only. Doxygen will then generate output that is more tailored for
226 226 # Java. For instance, namespaces will be presented as packages, qualified
227 227 # scopes will look different, etc.
228 228
229 229 OPTIMIZE_OUTPUT_JAVA = NO
230 230
231 231 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
232 232 # sources only. Doxygen will then generate output that is more tailored for
233 233 # Fortran.
234 234
235 235 OPTIMIZE_FOR_FORTRAN = NO
236 236
237 237 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
238 238 # sources. Doxygen will then generate output that is tailored for
239 239 # VHDL.
240 240
241 241 OPTIMIZE_OUTPUT_VHDL = NO
242 242
243 243 # Doxygen selects the parser to use depending on the extension of the files it
244 244 # parses. With this tag you can assign which parser to use for a given
245 245 # extension. Doxygen has a built-in mapping, but you can override or extend it
246 246 # using this tag. The format is ext=language, where ext is a file extension,
247 247 # and language is one of the parsers supported by doxygen: IDL, Java,
248 248 # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
249 249 # C++. For instance to make doxygen treat .inc files as Fortran files (default
250 250 # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
251 251 # that for custom extensions you also need to set FILE_PATTERNS otherwise the
252 252 # files are not read by doxygen.
253 253
254 254 EXTENSION_MAPPING =
255 255
256 256 # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
257 257 # comments according to the Markdown format, which allows for more readable
258 258 # documentation. See http://daringfireball.net/projects/markdown/ for details.
259 259 # The output of markdown processing is further processed by doxygen, so you
260 260 # can mix doxygen, HTML, and XML commands with Markdown formatting.
261 261 # Disable only in case of backward compatibilities issues.
262 262
263 263 MARKDOWN_SUPPORT = YES
264 264
265 265 # When enabled doxygen tries to link words that correspond to documented classes,
266 266 # or namespaces to their corresponding documentation. Such a link can be
267 267 # prevented in individual cases by by putting a % sign in front of the word or
268 268 # globally by setting AUTOLINK_SUPPORT to NO.
269 269
270 270 AUTOLINK_SUPPORT = YES
271 271
272 272 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
273 273 # to include (a tag file for) the STL sources as input, then you should
274 274 # set this tag to YES in order to let doxygen match functions declarations and
275 275 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
276 276 # func(std::string) {}). This also makes the inheritance and collaboration
277 277 # diagrams that involve STL classes more complete and accurate.
278 278
279 279 BUILTIN_STL_SUPPORT = NO
280 280
281 281 # If you use Microsoft's C++/CLI language, you should set this option to YES to
282 282 # enable parsing support.
283 283
284 284 CPP_CLI_SUPPORT = NO
285 285
286 286 # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
287 287 # Doxygen will parse them like normal C++ but will assume all classes use public
288 288 # instead of private inheritance when no explicit protection keyword is present.
289 289
290 290 SIP_SUPPORT = NO
291 291
292 292 # For Microsoft's IDL there are propget and propput attributes to indicate
293 293 # getter and setter methods for a property. Setting this option to YES (the
294 294 # default) will make doxygen replace the get and set methods by a property in
295 295 # the documentation. This will only work if the methods are indeed getting or
296 296 # setting a simple type. If this is not the case, or you want to show the
297 297 # methods anyway, you should set this option to NO.
298 298
299 299 IDL_PROPERTY_SUPPORT = YES
300 300
301 301 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
302 302 # tag is set to YES, then doxygen will reuse the documentation of the first
303 303 # member in the group (if any) for the other members of the group. By default
304 304 # all members of a group must be documented explicitly.
305 305
306 306 DISTRIBUTE_GROUP_DOC = NO
307 307
308 308 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of
309 309 # the same type (for instance a group of public functions) to be put as a
310 310 # subgroup of that type (e.g. under the Public Functions section). Set it to
311 311 # NO to prevent subgrouping. Alternatively, this can be done per class using
312 312 # the \nosubgrouping command.
313 313
314 314 SUBGROUPING = YES
315 315
316 316 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
317 317 # unions are shown inside the group in which they are included (e.g. using
318 318 # @ingroup) instead of on a separate page (for HTML and Man pages) or
319 319 # section (for LaTeX and RTF).
320 320
321 321 INLINE_GROUPED_CLASSES = NO
322 322
323 323 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
324 324 # unions with only public data fields will be shown inline in the documentation
325 325 # of the scope in which they are defined (i.e. file, namespace, or group
326 326 # documentation), provided this scope is documented. If set to NO (the default),
327 327 # structs, classes, and unions are shown on a separate page (for HTML and Man
328 328 # pages) or section (for LaTeX and RTF).
329 329
330 330 INLINE_SIMPLE_STRUCTS = NO
331 331
332 332 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
333 333 # is documented as struct, union, or enum with the name of the typedef. So
334 334 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
335 335 # with name TypeT. When disabled the typedef will appear as a member of a file,
336 336 # namespace, or class. And the struct will be named TypeS. This can typically
337 337 # be useful for C code in case the coding convention dictates that all compound
338 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 342 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
343 343 # determine which symbols to keep in memory and which to flush to disk.
344 344 # When the cache is full, less often used symbols will be written to disk.
345 345 # For small to medium size projects (<1000 input files) the default value is
346 346 # probably good enough. For larger projects a too small cache size can cause
347 347 # doxygen to be busy swapping symbols to and from disk most of the time
348 348 # causing a significant performance penalty.
349 349 # If the system has enough physical memory increasing the cache will improve the
350 350 # performance by keeping more symbols in memory. Note that the value works on
351 351 # a logarithmic scale so increasing the size by one will roughly double the
352 352 # memory usage. The cache size is given by this formula:
353 353 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
354 354 # corresponding to a cache size of 2^16 = 65536 symbols.
355 355
356 356 SYMBOL_CACHE_SIZE = 0
357 357
358 358 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
359 359 # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
360 360 # their name and scope. Since this can be an expensive process and often the
361 361 # same symbol appear multiple times in the code, doxygen keeps a cache of
362 362 # pre-resolved symbols. If the cache is too small doxygen will become slower.
363 363 # If the cache is too large, memory is wasted. The cache size is given by this
364 364 # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
365 365 # corresponding to a cache size of 2^16 = 65536 symbols.
366 366
367 367 LOOKUP_CACHE_SIZE = 0
368 368
369 369 #---------------------------------------------------------------------------
370 370 # Build related configuration options
371 371 #---------------------------------------------------------------------------
372 372
373 373 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
374 374 # documentation are documented, even if no documentation was available.
375 375 # Private class members and static file members will be hidden unless
376 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 380 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
381 381 # will be included in the documentation.
382 382
383 383 EXTRACT_PRIVATE = NO
384 384
385 385 # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
386 386 # scope will be included in the documentation.
387 387
388 388 EXTRACT_PACKAGE = NO
389 389
390 390 # If the EXTRACT_STATIC tag is set to YES all static members of a file
391 391 # will be included in the documentation.
392 392
393 393 EXTRACT_STATIC = NO
394 394
395 395 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
396 396 # defined locally in source files will be included in the documentation.
397 397 # If set to NO only classes defined in header files are included.
398 398
399 399 EXTRACT_LOCAL_CLASSES = YES
400 400
401 401 # This flag is only useful for Objective-C code. When set to YES local
402 402 # methods, which are defined in the implementation section but not in
403 403 # the interface are included in the documentation.
404 404 # If set to NO (the default) only methods in the interface are included.
405 405
406 406 EXTRACT_LOCAL_METHODS = NO
407 407
408 408 # If this flag is set to YES, the members of anonymous namespaces will be
409 409 # extracted and appear in the documentation as a namespace called
410 410 # 'anonymous_namespace{file}', where file will be replaced with the base
411 411 # name of the file that contains the anonymous namespace. By default
412 412 # anonymous namespaces are hidden.
413 413
414 414 EXTRACT_ANON_NSPACES = NO
415 415
416 416 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
417 417 # undocumented members of documented classes, files or namespaces.
418 418 # If set to NO (the default) these members will be included in the
419 419 # various overviews, but no documentation section is generated.
420 420 # This option has no effect if EXTRACT_ALL is enabled.
421 421
422 422 HIDE_UNDOC_MEMBERS = NO
423 423
424 424 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
425 425 # undocumented classes that are normally visible in the class hierarchy.
426 426 # If set to NO (the default) these classes will be included in the various
427 427 # overviews. This option has no effect if EXTRACT_ALL is enabled.
428 428
429 429 HIDE_UNDOC_CLASSES = NO
430 430
431 431 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
432 432 # friend (class|struct|union) declarations.
433 433 # If set to NO (the default) these declarations will be included in the
434 434 # documentation.
435 435
436 436 HIDE_FRIEND_COMPOUNDS = NO
437 437
438 438 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
439 439 # documentation blocks found inside the body of a function.
440 440 # If set to NO (the default) these blocks will be appended to the
441 441 # function's detailed documentation block.
442 442
443 443 HIDE_IN_BODY_DOCS = NO
444 444
445 445 # The INTERNAL_DOCS tag determines if documentation
446 446 # that is typed after a \internal command is included. If the tag is set
447 447 # to NO (the default) then the documentation will be excluded.
448 448 # Set it to YES to include the internal documentation.
449 449
450 450 INTERNAL_DOCS = NO
451 451
452 452 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
453 453 # file names in lower-case letters. If set to YES upper-case letters are also
454 454 # allowed. This is useful if you have classes or files whose names only differ
455 455 # in case and if your file system supports case sensitive file names. Windows
456 456 # and Mac users are advised to set this option to NO.
457 457
458 458 CASE_SENSE_NAMES = NO
459 459
460 460 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
461 461 # will show members with their full class and namespace scopes in the
462 462 # documentation. If set to YES the scope will be hidden.
463 463
464 464 HIDE_SCOPE_NAMES = YES
465 465
466 466 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
467 467 # will put a list of the files that are included by a file in the documentation
468 468 # of that file.
469 469
470 470 SHOW_INCLUDE_FILES = YES
471 471
472 472 # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
473 473 # will list include files with double quotes in the documentation
474 474 # rather than with sharp brackets.
475 475
476 476 FORCE_LOCAL_INCLUDES = NO
477 477
478 478 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
479 479 # is inserted in the documentation for inline members.
480 480
481 481 INLINE_INFO = YES
482 482
483 483 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
484 484 # will sort the (detailed) documentation of file and class members
485 485 # alphabetically by member name. If set to NO the members will appear in
486 486 # declaration order.
487 487
488 488 SORT_MEMBER_DOCS = YES
489 489
490 490 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
491 491 # brief documentation of file, namespace and class members alphabetically
492 492 # by member name. If set to NO (the default) the members will appear in
493 493 # declaration order.
494 494
495 495 SORT_BRIEF_DOCS = NO
496 496
497 497 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
498 498 # will sort the (brief and detailed) documentation of class members so that
499 499 # constructors and destructors are listed first. If set to NO (the default)
500 500 # the constructors will appear in the respective orders defined by
501 501 # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
502 502 # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
503 503 # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
504 504
505 505 SORT_MEMBERS_CTORS_1ST = NO
506 506
507 507 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
508 508 # hierarchy of group names into alphabetical order. If set to NO (the default)
509 509 # the group names will appear in their defined order.
510 510
511 511 SORT_GROUP_NAMES = NO
512 512
513 513 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
514 514 # sorted by fully-qualified names, including namespaces. If set to
515 515 # NO (the default), the class list will be sorted only by class name,
516 516 # not including the namespace part.
517 517 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
518 518 # Note: This option applies only to the class list, not to the
519 519 # alphabetical list.
520 520
521 521 SORT_BY_SCOPE_NAME = NO
522 522
523 523 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
524 524 # do proper type resolution of all parameters of a function it will reject a
525 525 # match between the prototype and the implementation of a member function even
526 526 # if there is only one candidate or it is obvious which candidate to choose
527 527 # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
528 528 # will still accept a match between prototype and implementation in such cases.
529 529
530 530 STRICT_PROTO_MATCHING = NO
531 531
532 532 # The GENERATE_TODOLIST tag can be used to enable (YES) or
533 533 # disable (NO) the todo list. This list is created by putting \todo
534 534 # commands in the documentation.
535 535
536 536 GENERATE_TODOLIST = YES
537 537
538 538 # The GENERATE_TESTLIST tag can be used to enable (YES) or
539 539 # disable (NO) the test list. This list is created by putting \test
540 540 # commands in the documentation.
541 541
542 542 GENERATE_TESTLIST = YES
543 543
544 544 # The GENERATE_BUGLIST tag can be used to enable (YES) or
545 545 # disable (NO) the bug list. This list is created by putting \bug
546 546 # commands in the documentation.
547 547
548 548 GENERATE_BUGLIST = YES
549 549
550 550 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
551 551 # disable (NO) the deprecated list. This list is created by putting
552 552 # \deprecated commands in the documentation.
553 553
554 554 GENERATE_DEPRECATEDLIST= YES
555 555
556 556 # The ENABLED_SECTIONS tag can be used to enable conditional
557 557 # documentation sections, marked by \if section-label ... \endif
558 558 # and \cond section-label ... \endcond blocks.
559 559
560 560 ENABLED_SECTIONS =
561 561
562 562 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
563 563 # the initial value of a variable or macro consists of for it to appear in
564 564 # the documentation. If the initializer consists of more lines than specified
565 565 # here it will be hidden. Use a value of 0 to hide initializers completely.
566 566 # The appearance of the initializer of individual variables and macros in the
567 567 # documentation can be controlled using \showinitializer or \hideinitializer
568 568 # command in the documentation regardless of this setting.
569 569
570 570 MAX_INITIALIZER_LINES = 30
571 571
572 572 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated
573 573 # at the bottom of the documentation of classes and structs. If set to YES the
574 574 # list will mention the files that were used to generate the documentation.
575 575
576 576 SHOW_USED_FILES = YES
577 577
578 578 # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
579 579 # This will remove the Files entry from the Quick Index and from the
580 580 # Folder Tree View (if specified). The default is YES.
581 581
582 582 SHOW_FILES = YES
583 583
584 584 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the
585 585 # Namespaces page. This will remove the Namespaces entry from the Quick Index
586 586 # and from the Folder Tree View (if specified). The default is YES.
587 587
588 588 SHOW_NAMESPACES = YES
589 589
590 590 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
591 591 # doxygen should invoke to get the current version for each file (typically from
592 592 # the version control system). Doxygen will invoke the program by executing (via
593 593 # popen()) the command <command> <input-file>, where <command> is the value of
594 594 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
595 595 # provided by doxygen. Whatever the program writes to standard output
596 596 # is used as the file version. See the manual for examples.
597 597
598 598 FILE_VERSION_FILTER =
599 599
600 600 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
601 601 # by doxygen. The layout file controls the global structure of the generated
602 602 # output files in an output format independent way. To create the layout file
603 603 # that represents doxygen's defaults, run doxygen with the -l option.
604 604 # You can optionally specify a file name after the option, if omitted
605 605 # DoxygenLayout.xml will be used as the name of the layout file.
606 606
607 607 LAYOUT_FILE =
608 608
609 609 # The CITE_BIB_FILES tag can be used to specify one or more bib files
610 610 # containing the references data. This must be a list of .bib files. The
611 611 # .bib extension is automatically appended if omitted. Using this command
612 612 # requires the bibtex tool to be installed. See also
613 613 # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
614 614 # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
615 615 # feature you need bibtex and perl available in the search path. Do not use
616 616 # file names with spaces, bibtex cannot handle them.
617 617
618 618 CITE_BIB_FILES =
619 619
620 620 #---------------------------------------------------------------------------
621 621 # configuration options related to warning and progress messages
622 622 #---------------------------------------------------------------------------
623 623
624 624 # The QUIET tag can be used to turn on/off the messages that are generated
625 625 # by doxygen. Possible values are YES and NO. If left blank NO is used.
626 626
627 627 QUIET = NO
628 628
629 629 # The WARNINGS tag can be used to turn on/off the warning messages that are
630 630 # generated by doxygen. Possible values are YES and NO. If left blank
631 631 # NO is used.
632 632
633 633 WARNINGS = YES
634 634
635 635 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
636 636 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will
637 637 # automatically be disabled.
638 638
639 639 WARN_IF_UNDOCUMENTED = YES
640 640
641 641 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
642 642 # potential errors in the documentation, such as not documenting some
643 643 # parameters in a documented function, or documenting parameters that
644 644 # don't exist or using markup commands wrongly.
645 645
646 646 WARN_IF_DOC_ERROR = YES
647 647
648 648 # The WARN_NO_PARAMDOC option can be enabled to get warnings for
649 649 # functions that are documented, but have no documentation for their parameters
650 650 # or return value. If set to NO (the default) doxygen will only warn about
651 651 # wrong or incomplete parameter documentation, but not about the absence of
652 652 # documentation.
653 653
654 654 WARN_NO_PARAMDOC = NO
655 655
656 656 # The WARN_FORMAT tag determines the format of the warning messages that
657 657 # doxygen can produce. The string should contain the $file, $line, and $text
658 658 # tags, which will be replaced by the file and line number from which the
659 659 # warning originated and the warning text. Optionally the format may contain
660 660 # $version, which will be replaced by the version of the file (if it could
661 661 # be obtained via FILE_VERSION_FILTER)
662 662
663 663 WARN_FORMAT = "$file:$line: $text"
664 664
665 665 # The WARN_LOGFILE tag can be used to specify a file to which warning
666 666 # and error messages should be written. If left blank the output is written
667 667 # to stderr.
668 668
669 669 WARN_LOGFILE =
670 670
671 671 #---------------------------------------------------------------------------
672 672 # configuration options related to the input files
673 673 #---------------------------------------------------------------------------
674 674
675 675 # The INPUT tag can be used to specify the files and/or directories that contain
676 676 # documented source files. You may enter file names like "myfile.cpp" or
677 677 # directories like "/usr/src/myproject". Separate the files or directories
678 678 # with spaces.
679 679
680 INPUT = /opt/libuc2
680 INPUT = include
681 681
682 682 # This tag can be used to specify the character encoding of the source files
683 683 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
684 684 # also the default input encoding. Doxygen uses libiconv (or the iconv built
685 685 # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
686 686 # the list of possible encodings.
687 687
688 688 INPUT_ENCODING = UTF-8
689 689
690 690 # If the value of the INPUT tag contains directories, you can use the
691 691 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
692 692 # and *.h) to filter out the source-files in the directories. If left
693 693 # blank the following patterns are tested:
694 694 # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
695 695 # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
696 696 # *.f90 *.f *.for *.vhd *.vhdl
697 697
698 698 FILE_PATTERNS = *.c \
699 699 *.cc \
700 700 *.cxx \
701 701 *.cpp \
702 702 *.c++ \
703 703 *.d \
704 704 *.java \
705 705 *.ii \
706 706 *.ixx \
707 707 *.ipp \
708 708 *.i++ \
709 709 *.inl \
710 710 *.h \
711 711 *.hh \
712 712 *.hxx \
713 713 *.hpp \
714 714 *.h++ \
715 715 *.idl \
716 716 *.odl \
717 717 *.cs \
718 718 *.php \
719 719 *.php3 \
720 720 *.inc \
721 721 *.m \
722 722 *.markdown \
723 723 *.md \
724 724 *.mm \
725 725 *.dox \
726 726 *.py \
727 727 *.f90 \
728 728 *.f \
729 729 *.for \
730 730 *.vhd \
731 731 *.vhdl
732 732
733 733 # The RECURSIVE tag can be used to turn specify whether or not subdirectories
734 734 # should be searched for input files as well. Possible values are YES and NO.
735 735 # If left blank NO is used.
736 736
737 737 RECURSIVE = YES
738 738
739 739 # The EXCLUDE tag can be used to specify files and/or directories that should be
740 740 # excluded from the INPUT source files. This way you can easily exclude a
741 741 # subdirectory from a directory tree whose root is specified with the INPUT tag.
742 742 # Note that relative paths are relative to the directory from which doxygen is
743 743 # run.
744 744
745 745 EXCLUDE =
746 746
747 747 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
748 748 # directories that are symbolic links (a Unix file system feature) are excluded
749 749 # from the input.
750 750
751 751 EXCLUDE_SYMLINKS = NO
752 752
753 753 # If the value of the INPUT tag contains directories, you can use the
754 754 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
755 755 # certain files from those directories. Note that the wildcards are matched
756 756 # against the file with absolute path, so to exclude all test directories
757 757 # for example use the pattern */test/*
758 758
759 759 EXCLUDE_PATTERNS =
760 760
761 761 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
762 762 # (namespaces, classes, functions, etc.) that should be excluded from the
763 763 # output. The symbol name can be a fully qualified name, a word, or if the
764 764 # wildcard * is used, a substring. Examples: ANamespace, AClass,
765 765 # AClass::ANamespace, ANamespace::*Test
766 766
767 767 EXCLUDE_SYMBOLS =
768 768
769 769 # The EXAMPLE_PATH tag can be used to specify one or more files or
770 770 # directories that contain example code fragments that are included (see
771 771 # the \include command).
772 772
773 773 EXAMPLE_PATH =
774 774
775 775 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
776 776 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
777 777 # and *.h) to filter out the source-files in the directories. If left
778 778 # blank all files are included.
779 779
780 780 EXAMPLE_PATTERNS = *
781 781
782 782 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
783 783 # searched for input files to be used with the \include or \dontinclude
784 784 # commands irrespective of the value of the RECURSIVE tag.
785 785 # Possible values are YES and NO. If left blank NO is used.
786 786
787 787 EXAMPLE_RECURSIVE = NO
788 788
789 789 # The IMAGE_PATH tag can be used to specify one or more files or
790 790 # directories that contain image that are included in the documentation (see
791 791 # the \image command).
792 792
793 793 IMAGE_PATH =
794 794
795 795 # The INPUT_FILTER tag can be used to specify a program that doxygen should
796 796 # invoke to filter for each input file. Doxygen will invoke the filter program
797 797 # by executing (via popen()) the command <filter> <input-file>, where <filter>
798 798 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an
799 799 # input file. Doxygen will then use the output that the filter program writes
800 800 # to standard output. If FILTER_PATTERNS is specified, this tag will be
801 801 # ignored.
802 802
803 803 INPUT_FILTER =
804 804
805 805 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
806 806 # basis. Doxygen will compare the file name with each pattern and apply the
807 807 # filter if there is a match. The filters are a list of the form:
808 808 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
809 809 # info on how filters are used. If FILTER_PATTERNS is empty or if
810 810 # non of the patterns match the file name, INPUT_FILTER is applied.
811 811
812 812 FILTER_PATTERNS =
813 813
814 814 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
815 815 # INPUT_FILTER) will be used to filter the input files when producing source
816 816 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
817 817
818 818 FILTER_SOURCE_FILES = NO
819 819
820 820 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
821 821 # pattern. A pattern will override the setting for FILTER_PATTERN (if any)
822 822 # and it is also possible to disable source filtering for a specific pattern
823 823 # using *.ext= (so without naming a filter). This option only has effect when
824 824 # FILTER_SOURCE_FILES is enabled.
825 825
826 826 FILTER_SOURCE_PATTERNS =
827 827
828 828 # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
829 829 # is part of the input, its contents will be placed on the main page (index.html).
830 830 # This can be useful if you have a project on for instance GitHub and want reuse
831 831 # the introduction page also for the doxygen output.
832 832
833 833 USE_MDFILE_AS_MAINPAGE =
834 834
835 835 #---------------------------------------------------------------------------
836 836 # configuration options related to source browsing
837 837 #---------------------------------------------------------------------------
838 838
839 839 # If the SOURCE_BROWSER tag is set to YES then a list of source files will
840 840 # be generated. Documented entities will be cross-referenced with these sources.
841 841 # Note: To get rid of all source code in the generated output, make sure also
842 842 # VERBATIM_HEADERS is set to NO.
843 843
844 844 SOURCE_BROWSER = NO
845 845
846 846 # Setting the INLINE_SOURCES tag to YES will include the body
847 847 # of functions and classes directly in the documentation.
848 848
849 849 INLINE_SOURCES = NO
850 850
851 851 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
852 852 # doxygen to hide any special comment blocks from generated source code
853 853 # fragments. Normal C, C++ and Fortran comments will always remain visible.
854 854
855 855 STRIP_CODE_COMMENTS = YES
856 856
857 857 # If the REFERENCED_BY_RELATION tag is set to YES
858 858 # then for each documented function all documented
859 859 # functions referencing it will be listed.
860 860
861 861 REFERENCED_BY_RELATION = NO
862 862
863 863 # If the REFERENCES_RELATION tag is set to YES
864 864 # then for each documented function all documented entities
865 865 # called/used by that function will be listed.
866 866
867 867 REFERENCES_RELATION = NO
868 868
869 869 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
870 870 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
871 871 # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
872 872 # link to the source code. Otherwise they will link to the documentation.
873 873
874 874 REFERENCES_LINK_SOURCE = YES
875 875
876 876 # If the USE_HTAGS tag is set to YES then the references to source code
877 877 # will point to the HTML generated by the htags(1) tool instead of doxygen
878 878 # built-in source browser. The htags tool is part of GNU's global source
879 879 # tagging system (see http://www.gnu.org/software/global/global.html). You
880 880 # will need version 4.8.6 or higher.
881 881
882 882 USE_HTAGS = NO
883 883
884 884 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
885 885 # will generate a verbatim copy of the header file for each class for
886 886 # which an include is specified. Set to NO to disable this.
887 887
888 888 VERBATIM_HEADERS = YES
889 889
890 890 #---------------------------------------------------------------------------
891 891 # configuration options related to the alphabetical class index
892 892 #---------------------------------------------------------------------------
893 893
894 894 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
895 895 # of all compounds will be generated. Enable this if the project
896 896 # contains a lot of classes, structs, unions or interfaces.
897 897
898 898 ALPHABETICAL_INDEX = YES
899 899
900 900 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
901 901 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
902 902 # in which this list will be split (can be a number in the range [1..20])
903 903
904 904 COLS_IN_ALPHA_INDEX = 5
905 905
906 906 # In case all classes in a project start with a common prefix, all
907 907 # classes will be put under the same header in the alphabetical index.
908 908 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that
909 909 # should be ignored while generating the index headers.
910 910
911 911 IGNORE_PREFIX =
912 912
913 913 #---------------------------------------------------------------------------
914 914 # configuration options related to the HTML output
915 915 #---------------------------------------------------------------------------
916 916
917 917 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will
918 918 # generate HTML output.
919 919
920 920 GENERATE_HTML = YES
921 921
922 922 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
923 923 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
924 924 # put in front of it. If left blank `html' will be used as the default path.
925 925
926 926 HTML_OUTPUT = html
927 927
928 928 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for
929 929 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank
930 930 # doxygen will generate files with .html extension.
931 931
932 932 HTML_FILE_EXTENSION = .html
933 933
934 934 # The HTML_HEADER tag can be used to specify a personal HTML header for
935 935 # each generated HTML page. If it is left blank doxygen will generate a
936 936 # standard header. Note that when using a custom header you are responsible
937 937 # for the proper inclusion of any scripts and style sheets that doxygen
938 938 # needs, which is dependent on the configuration options used.
939 939 # It is advised to generate a default header using "doxygen -w html
940 940 # header.html footer.html stylesheet.css YourConfigFile" and then modify
941 941 # that header. Note that the header is subject to change so you typically
942 942 # have to redo this when upgrading to a newer version of doxygen or when
943 943 # changing the value of configuration settings such as GENERATE_TREEVIEW!
944 944
945 945 HTML_HEADER =
946 946
947 947 # The HTML_FOOTER tag can be used to specify a personal HTML footer for
948 948 # each generated HTML page. If it is left blank doxygen will generate a
949 949 # standard footer.
950 950
951 951 HTML_FOOTER =
952 952
953 953 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
954 954 # style sheet that is used by each HTML page. It can be used to
955 955 # fine-tune the look of the HTML output. If left blank doxygen will
956 956 # generate a default style sheet. Note that it is recommended to use
957 957 # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
958 958 # tag will in the future become obsolete.
959 959
960 960 HTML_STYLESHEET =
961 961
962 962 # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
963 963 # user-defined cascading style sheet that is included after the standard
964 964 # style sheets created by doxygen. Using this option one can overrule
965 965 # certain style aspects. This is preferred over using HTML_STYLESHEET
966 966 # since it does not replace the standard style sheet and is therefor more
967 967 # robust against future updates. Doxygen will copy the style sheet file to
968 968 # the output directory.
969 969
970 970 HTML_EXTRA_STYLESHEET =
971 971
972 972 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
973 973 # other source files which should be copied to the HTML output directory. Note
974 974 # that these files will be copied to the base HTML output directory. Use the
975 975 # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
976 976 # files. In the HTML_STYLESHEET file, use the file name only. Also note that
977 977 # the files will be copied as-is; there are no commands or markers available.
978 978
979 979 HTML_EXTRA_FILES =
980 980
981 981 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
982 982 # Doxygen will adjust the colors in the style sheet and background images
983 983 # according to this color. Hue is specified as an angle on a colorwheel,
984 984 # see http://en.wikipedia.org/wiki/Hue for more information.
985 985 # For instance the value 0 represents red, 60 is yellow, 120 is green,
986 986 # 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
987 987 # The allowed range is 0 to 359.
988 988
989 989 HTML_COLORSTYLE_HUE = 220
990 990
991 991 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
992 992 # the colors in the HTML output. For a value of 0 the output will use
993 993 # grayscales only. A value of 255 will produce the most vivid colors.
994 994
995 995 HTML_COLORSTYLE_SAT = 100
996 996
997 997 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
998 998 # the luminance component of the colors in the HTML output. Values below
999 999 # 100 gradually make the output lighter, whereas values above 100 make
1000 1000 # the output darker. The value divided by 100 is the actual gamma applied,
1001 1001 # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1002 1002 # and 100 does not change the gamma.
1003 1003
1004 1004 HTML_COLORSTYLE_GAMMA = 80
1005 1005
1006 1006 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1007 1007 # page will contain the date and time when the page was generated. Setting
1008 1008 # this to NO can help when comparing the output of multiple runs.
1009 1009
1010 1010 HTML_TIMESTAMP = YES
1011 1011
1012 1012 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1013 1013 # documentation will contain sections that can be hidden and shown after the
1014 1014 # page has loaded.
1015 1015
1016 1016 HTML_DYNAMIC_SECTIONS = NO
1017 1017
1018 1018 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
1019 1019 # entries shown in the various tree structured indices initially; the user
1020 1020 # can expand and collapse entries dynamically later on. Doxygen will expand
1021 1021 # the tree to such a level that at most the specified number of entries are
1022 1022 # visible (unless a fully collapsed tree already exceeds this amount).
1023 1023 # So setting the number of entries 1 will produce a full collapsed tree by
1024 1024 # default. 0 is a special value representing an infinite number of entries
1025 1025 # and will result in a full expanded tree by default.
1026 1026
1027 1027 HTML_INDEX_NUM_ENTRIES = 100
1028 1028
1029 1029 # If the GENERATE_DOCSET tag is set to YES, additional index files
1030 1030 # will be generated that can be used as input for Apple's Xcode 3
1031 1031 # integrated development environment, introduced with OSX 10.5 (Leopard).
1032 1032 # To create a documentation set, doxygen will generate a Makefile in the
1033 1033 # HTML output directory. Running make will produce the docset in that
1034 1034 # directory and running "make install" will install the docset in
1035 1035 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1036 1036 # it at startup.
1037 1037 # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1038 1038 # for more information.
1039 1039
1040 1040 GENERATE_DOCSET = NO
1041 1041
1042 1042 # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1043 1043 # feed. A documentation feed provides an umbrella under which multiple
1044 1044 # documentation sets from a single provider (such as a company or product suite)
1045 1045 # can be grouped.
1046 1046
1047 1047 DOCSET_FEEDNAME = "Doxygen generated docs"
1048 1048
1049 1049 # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1050 1050 # should uniquely identify the documentation set bundle. This should be a
1051 1051 # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1052 1052 # will append .docset to the name.
1053 1053
1054 1054 DOCSET_BUNDLE_ID = org.doxygen.Project
1055 1055
1056 1056 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
1057 1057 # identify the documentation publisher. This should be a reverse domain-name
1058 1058 # style string, e.g. com.mycompany.MyDocSet.documentation.
1059 1059
1060 1060 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1061 1061
1062 1062 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1063 1063
1064 1064 DOCSET_PUBLISHER_NAME = Publisher
1065 1065
1066 1066 # If the GENERATE_HTMLHELP tag is set to YES, additional index files
1067 1067 # will be generated that can be used as input for tools like the
1068 1068 # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1069 1069 # of the generated HTML documentation.
1070 1070
1071 1071 GENERATE_HTMLHELP = NO
1072 1072
1073 1073 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1074 1074 # be used to specify the file name of the resulting .chm file. You
1075 1075 # can add a path in front of the file if the result should not be
1076 1076 # written to the html output directory.
1077 1077
1078 1078 CHM_FILE =
1079 1079
1080 1080 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1081 1081 # be used to specify the location (absolute path including file name) of
1082 1082 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1083 1083 # the HTML help compiler on the generated index.hhp.
1084 1084
1085 1085 HHC_LOCATION =
1086 1086
1087 1087 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1088 1088 # controls if a separate .chi index file is generated (YES) or that
1089 1089 # it should be included in the master .chm file (NO).
1090 1090
1091 1091 GENERATE_CHI = NO
1092 1092
1093 1093 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1094 1094 # is used to encode HtmlHelp index (hhk), content (hhc) and project file
1095 1095 # content.
1096 1096
1097 1097 CHM_INDEX_ENCODING =
1098 1098
1099 1099 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1100 1100 # controls whether a binary table of contents is generated (YES) or a
1101 1101 # normal table of contents (NO) in the .chm file.
1102 1102
1103 1103 BINARY_TOC = NO
1104 1104
1105 1105 # The TOC_EXPAND flag can be set to YES to add extra items for group members
1106 1106 # to the contents of the HTML help documentation and to the tree view.
1107 1107
1108 1108 TOC_EXPAND = NO
1109 1109
1110 1110 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1111 1111 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1112 1112 # that can be used as input for Qt's qhelpgenerator to generate a
1113 1113 # Qt Compressed Help (.qch) of the generated HTML documentation.
1114 1114
1115 1115 GENERATE_QHP = NO
1116 1116
1117 1117 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1118 1118 # be used to specify the file name of the resulting .qch file.
1119 1119 # The path specified is relative to the HTML output folder.
1120 1120
1121 1121 QCH_FILE =
1122 1122
1123 1123 # The QHP_NAMESPACE tag specifies the namespace to use when generating
1124 1124 # Qt Help Project output. For more information please see
1125 1125 # http://doc.trolltech.com/qthelpproject.html#namespace
1126 1126
1127 1127 QHP_NAMESPACE = org.doxygen.Project
1128 1128
1129 1129 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1130 1130 # Qt Help Project output. For more information please see
1131 1131 # http://doc.trolltech.com/qthelpproject.html#virtual-folders
1132 1132
1133 1133 QHP_VIRTUAL_FOLDER = doc
1134 1134
1135 1135 # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1136 1136 # add. For more information please see
1137 1137 # http://doc.trolltech.com/qthelpproject.html#custom-filters
1138 1138
1139 1139 QHP_CUST_FILTER_NAME =
1140 1140
1141 1141 # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1142 1142 # custom filter to add. For more information please see
1143 1143 # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1144 1144 # Qt Help Project / Custom Filters</a>.
1145 1145
1146 1146 QHP_CUST_FILTER_ATTRS =
1147 1147
1148 1148 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1149 1149 # project's
1150 1150 # filter section matches.
1151 1151 # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1152 1152 # Qt Help Project / Filter Attributes</a>.
1153 1153
1154 1154 QHP_SECT_FILTER_ATTRS =
1155 1155
1156 1156 # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1157 1157 # be used to specify the location of Qt's qhelpgenerator.
1158 1158 # If non-empty doxygen will try to run qhelpgenerator on the generated
1159 1159 # .qhp file.
1160 1160
1161 1161 QHG_LOCATION =
1162 1162
1163 1163 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1164 1164 # will be generated, which together with the HTML files, form an Eclipse help
1165 1165 # plugin. To install this plugin and make it available under the help contents
1166 1166 # menu in Eclipse, the contents of the directory containing the HTML and XML
1167 1167 # files needs to be copied into the plugins directory of eclipse. The name of
1168 1168 # the directory within the plugins directory should be the same as
1169 1169 # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1170 1170 # the help appears.
1171 1171
1172 1172 GENERATE_ECLIPSEHELP = NO
1173 1173
1174 1174 # A unique identifier for the eclipse help plugin. When installing the plugin
1175 1175 # the directory name containing the HTML and XML files should also have
1176 1176 # this name.
1177 1177
1178 1178 ECLIPSE_DOC_ID = org.doxygen.Project
1179 1179
1180 1180 # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1181 1181 # at top of each HTML page. The value NO (the default) enables the index and
1182 1182 # the value YES disables it. Since the tabs have the same information as the
1183 1183 # navigation tree you can set this option to NO if you already set
1184 1184 # GENERATE_TREEVIEW to YES.
1185 1185
1186 1186 DISABLE_INDEX = NO
1187 1187
1188 1188 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1189 1189 # structure should be generated to display hierarchical information.
1190 1190 # If the tag value is set to YES, a side panel will be generated
1191 1191 # containing a tree-like index structure (just like the one that
1192 1192 # is generated for HTML Help). For this to work a browser that supports
1193 1193 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1194 1194 # Windows users are probably better off using the HTML help feature.
1195 1195 # Since the tree basically has the same information as the tab index you
1196 1196 # could consider to set DISABLE_INDEX to NO when enabling this option.
1197 1197
1198 1198 GENERATE_TREEVIEW = NO
1199 1199
1200 1200 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1201 1201 # (range [0,1..20]) that doxygen will group on one line in the generated HTML
1202 1202 # documentation. Note that a value of 0 will completely suppress the enum
1203 1203 # values from appearing in the overview section.
1204 1204
1205 1205 ENUM_VALUES_PER_LINE = 4
1206 1206
1207 1207 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1208 1208 # used to set the initial width (in pixels) of the frame in which the tree
1209 1209 # is shown.
1210 1210
1211 1211 TREEVIEW_WIDTH = 250
1212 1212
1213 1213 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1214 1214 # links to external symbols imported via tag files in a separate window.
1215 1215
1216 1216 EXT_LINKS_IN_WINDOW = NO
1217 1217
1218 1218 # Use this tag to change the font size of Latex formulas included
1219 1219 # as images in the HTML documentation. The default is 10. Note that
1220 1220 # when you change the font size after a successful doxygen run you need
1221 1221 # to manually remove any form_*.png images from the HTML output directory
1222 1222 # to force them to be regenerated.
1223 1223
1224 1224 FORMULA_FONTSIZE = 10
1225 1225
1226 1226 # Use the FORMULA_TRANPARENT tag to determine whether or not the images
1227 1227 # generated for formulas are transparent PNGs. Transparent PNGs are
1228 1228 # not supported properly for IE 6.0, but are supported on all modern browsers.
1229 1229 # Note that when changing this option you need to delete any form_*.png files
1230 1230 # in the HTML output before the changes have effect.
1231 1231
1232 1232 FORMULA_TRANSPARENT = YES
1233 1233
1234 1234 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1235 1235 # (see http://www.mathjax.org) which uses client side Javascript for the
1236 1236 # rendering instead of using prerendered bitmaps. Use this if you do not
1237 1237 # have LaTeX installed or if you want to formulas look prettier in the HTML
1238 1238 # output. When enabled you may also need to install MathJax separately and
1239 1239 # configure the path to it using the MATHJAX_RELPATH option.
1240 1240
1241 1241 USE_MATHJAX = NO
1242 1242
1243 1243 # When MathJax is enabled you can set the default output format to be used for
1244 1244 # thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
1245 1245 # SVG. The default value is HTML-CSS, which is slower, but has the best
1246 1246 # compatibility.
1247 1247
1248 1248 MATHJAX_FORMAT = HTML-CSS
1249 1249
1250 1250 # When MathJax is enabled you need to specify the location relative to the
1251 1251 # HTML output directory using the MATHJAX_RELPATH option. The destination
1252 1252 # directory should contain the MathJax.js script. For instance, if the mathjax
1253 1253 # directory is located at the same level as the HTML output directory, then
1254 1254 # MATHJAX_RELPATH should be ../mathjax. The default value points to
1255 1255 # the MathJax Content Delivery Network so you can quickly see the result without
1256 1256 # installing MathJax. However, it is strongly recommended to install a local
1257 1257 # copy of MathJax from http://www.mathjax.org before deployment.
1258 1258
1259 1259 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1260 1260
1261 1261 # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1262 1262 # names that should be enabled during MathJax rendering.
1263 1263
1264 1264 MATHJAX_EXTENSIONS =
1265 1265
1266 1266 # When the SEARCHENGINE tag is enabled doxygen will generate a search box
1267 1267 # for the HTML output. The underlying search engine uses javascript
1268 1268 # and DHTML and should work on any modern browser. Note that when using
1269 1269 # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1270 1270 # (GENERATE_DOCSET) there is already a search function so this one should
1271 1271 # typically be disabled. For large projects the javascript based search engine
1272 1272 # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1273 1273
1274 1274 SEARCHENGINE = YES
1275 1275
1276 1276 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1277 1277 # implemented using a web server instead of a web client using Javascript.
1278 1278 # There are two flavours of web server based search depending on the
1279 1279 # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
1280 1280 # searching and an index file used by the script. When EXTERNAL_SEARCH is
1281 1281 # enabled the indexing and searching needs to be provided by external tools.
1282 1282 # See the manual for details.
1283 1283
1284 1284 SERVER_BASED_SEARCH = NO
1285 1285
1286 1286 # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
1287 1287 # script for searching. Instead the search results are written to an XML file
1288 1288 # which needs to be processed by an external indexer. Doxygen will invoke an
1289 1289 # external search engine pointed to by the SEARCHENGINE_URL option to obtain
1290 1290 # the search results. Doxygen ships with an example indexer (doxyindexer) and
1291 1291 # search engine (doxysearch.cgi) which are based on the open source search engine
1292 1292 # library Xapian. See the manual for configuration details.
1293 1293
1294 1294 EXTERNAL_SEARCH = NO
1295 1295
1296 1296 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
1297 1297 # which will returned the search results when EXTERNAL_SEARCH is enabled.
1298 1298 # Doxygen ships with an example search engine (doxysearch) which is based on
1299 1299 # the open source search engine library Xapian. See the manual for configuration
1300 1300 # details.
1301 1301
1302 1302 SEARCHENGINE_URL =
1303 1303
1304 1304 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1305 1305 # search data is written to a file for indexing by an external tool. With the
1306 1306 # SEARCHDATA_FILE tag the name of this file can be specified.
1307 1307
1308 1308 SEARCHDATA_FILE = searchdata.xml
1309 1309
1310 1310 # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
1311 1311 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1312 1312 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1313 1313 # projects and redirect the results back to the right project.
1314 1314
1315 1315 EXTERNAL_SEARCH_ID =
1316 1316
1317 1317 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1318 1318 # projects other than the one defined by this configuration file, but that are
1319 1319 # all added to the same external search index. Each project needs to have a
1320 1320 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
1321 1321 # of to a relative location where the documentation can be found.
1322 1322 # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
1323 1323
1324 1324 EXTRA_SEARCH_MAPPINGS =
1325 1325
1326 1326 #---------------------------------------------------------------------------
1327 1327 # configuration options related to the LaTeX output
1328 1328 #---------------------------------------------------------------------------
1329 1329
1330 1330 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1331 1331 # generate Latex output.
1332 1332
1333 1333 GENERATE_LATEX = YES
1334 1334
1335 1335 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1336 1336 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1337 1337 # put in front of it. If left blank `latex' will be used as the default path.
1338 1338
1339 1339 LATEX_OUTPUT = latex
1340 1340
1341 1341 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1342 1342 # invoked. If left blank `latex' will be used as the default command name.
1343 1343 # Note that when enabling USE_PDFLATEX this option is only used for
1344 1344 # generating bitmaps for formulas in the HTML output, but not in the
1345 1345 # Makefile that is written to the output directory.
1346 1346
1347 1347 LATEX_CMD_NAME = latex
1348 1348
1349 1349 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1350 1350 # generate index for LaTeX. If left blank `makeindex' will be used as the
1351 1351 # default command name.
1352 1352
1353 1353 MAKEINDEX_CMD_NAME = makeindex
1354 1354
1355 1355 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1356 1356 # LaTeX documents. This may be useful for small projects and may help to
1357 1357 # save some trees in general.
1358 1358
1359 1359 COMPACT_LATEX = NO
1360 1360
1361 1361 # The PAPER_TYPE tag can be used to set the paper type that is used
1362 1362 # by the printer. Possible values are: a4, letter, legal and
1363 1363 # executive. If left blank a4wide will be used.
1364 1364
1365 1365 PAPER_TYPE = a4
1366 1366
1367 1367 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1368 1368 # packages that should be included in the LaTeX output.
1369 1369
1370 1370 EXTRA_PACKAGES =
1371 1371
1372 1372 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1373 1373 # the generated latex document. The header should contain everything until
1374 1374 # the first chapter. If it is left blank doxygen will generate a
1375 1375 # standard header. Notice: only use this tag if you know what you are doing!
1376 1376
1377 1377 LATEX_HEADER =
1378 1378
1379 1379 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1380 1380 # the generated latex document. The footer should contain everything after
1381 1381 # the last chapter. If it is left blank doxygen will generate a
1382 1382 # standard footer. Notice: only use this tag if you know what you are doing!
1383 1383
1384 1384 LATEX_FOOTER =
1385 1385
1386 1386 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1387 1387 # is prepared for conversion to pdf (using ps2pdf). The pdf file will
1388 1388 # contain links (just like the HTML output) instead of page references
1389 1389 # This makes the output suitable for online browsing using a pdf viewer.
1390 1390
1391 1391 PDF_HYPERLINKS = YES
1392 1392
1393 1393 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1394 1394 # plain latex in the generated Makefile. Set this option to YES to get a
1395 1395 # higher quality PDF documentation.
1396 1396
1397 1397 USE_PDFLATEX = YES
1398 1398
1399 1399 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1400 1400 # command to the generated LaTeX files. This will instruct LaTeX to keep
1401 1401 # running if errors occur, instead of asking the user for help.
1402 1402 # This option is also used when generating formulas in HTML.
1403 1403
1404 1404 LATEX_BATCHMODE = NO
1405 1405
1406 1406 # If LATEX_HIDE_INDICES is set to YES then doxygen will not
1407 1407 # include the index chapters (such as File Index, Compound Index, etc.)
1408 1408 # in the output.
1409 1409
1410 1410 LATEX_HIDE_INDICES = NO
1411 1411
1412 1412 # If LATEX_SOURCE_CODE is set to YES then doxygen will include
1413 1413 # source code with syntax highlighting in the LaTeX output.
1414 1414 # Note that which sources are shown also depends on other settings
1415 1415 # such as SOURCE_BROWSER.
1416 1416
1417 1417 LATEX_SOURCE_CODE = NO
1418 1418
1419 1419 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1420 1420 # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1421 1421 # http://en.wikipedia.org/wiki/BibTeX for more info.
1422 1422
1423 1423 LATEX_BIB_STYLE = plain
1424 1424
1425 1425 #---------------------------------------------------------------------------
1426 1426 # configuration options related to the RTF output
1427 1427 #---------------------------------------------------------------------------
1428 1428
1429 1429 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1430 1430 # The RTF output is optimized for Word 97 and may not look very pretty with
1431 1431 # other RTF readers or editors.
1432 1432
1433 1433 GENERATE_RTF = NO
1434 1434
1435 1435 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1436 1436 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1437 1437 # put in front of it. If left blank `rtf' will be used as the default path.
1438 1438
1439 1439 RTF_OUTPUT = rtf
1440 1440
1441 1441 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1442 1442 # RTF documents. This may be useful for small projects and may help to
1443 1443 # save some trees in general.
1444 1444
1445 1445 COMPACT_RTF = NO
1446 1446
1447 1447 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1448 1448 # will contain hyperlink fields. The RTF file will
1449 1449 # contain links (just like the HTML output) instead of page references.
1450 1450 # This makes the output suitable for online browsing using WORD or other
1451 1451 # programs which support those fields.
1452 1452 # Note: wordpad (write) and others do not support links.
1453 1453
1454 1454 RTF_HYPERLINKS = NO
1455 1455
1456 1456 # Load style sheet definitions from file. Syntax is similar to doxygen's
1457 1457 # config file, i.e. a series of assignments. You only have to provide
1458 1458 # replacements, missing definitions are set to their default value.
1459 1459
1460 1460 RTF_STYLESHEET_FILE =
1461 1461
1462 1462 # Set optional variables used in the generation of an rtf document.
1463 1463 # Syntax is similar to doxygen's config file.
1464 1464
1465 1465 RTF_EXTENSIONS_FILE =
1466 1466
1467 1467 #---------------------------------------------------------------------------
1468 1468 # configuration options related to the man page output
1469 1469 #---------------------------------------------------------------------------
1470 1470
1471 1471 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1472 1472 # generate man pages
1473 1473
1474 1474 GENERATE_MAN = NO
1475 1475
1476 1476 # The MAN_OUTPUT tag is used to specify where the man pages will be put.
1477 1477 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1478 1478 # put in front of it. If left blank `man' will be used as the default path.
1479 1479
1480 1480 MAN_OUTPUT = man
1481 1481
1482 1482 # The MAN_EXTENSION tag determines the extension that is added to
1483 1483 # the generated man pages (default is the subroutine's section .3)
1484 1484
1485 1485 MAN_EXTENSION = .3
1486 1486
1487 1487 # If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1488 1488 # then it will generate one additional man file for each entity
1489 1489 # documented in the real man page(s). These additional files
1490 1490 # only source the real man page, but without them the man command
1491 1491 # would be unable to find the correct page. The default is NO.
1492 1492
1493 1493 MAN_LINKS = NO
1494 1494
1495 1495 #---------------------------------------------------------------------------
1496 1496 # configuration options related to the XML output
1497 1497 #---------------------------------------------------------------------------
1498 1498
1499 1499 # If the GENERATE_XML tag is set to YES Doxygen will
1500 1500 # generate an XML file that captures the structure of
1501 1501 # the code including all documentation.
1502 1502
1503 1503 GENERATE_XML = NO
1504 1504
1505 1505 # The XML_OUTPUT tag is used to specify where the XML pages will be put.
1506 1506 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
1507 1507 # put in front of it. If left blank `xml' will be used as the default path.
1508 1508
1509 1509 XML_OUTPUT = xml
1510 1510
1511 1511 # The XML_SCHEMA tag can be used to specify an XML schema,
1512 1512 # which can be used by a validating XML parser to check the
1513 1513 # syntax of the XML files.
1514 1514
1515 1515 XML_SCHEMA =
1516 1516
1517 1517 # The XML_DTD tag can be used to specify an XML DTD,
1518 1518 # which can be used by a validating XML parser to check the
1519 1519 # syntax of the XML files.
1520 1520
1521 1521 XML_DTD =
1522 1522
1523 1523 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1524 1524 # dump the program listings (including syntax highlighting
1525 1525 # and cross-referencing information) to the XML output. Note that
1526 1526 # enabling this will significantly increase the size of the XML output.
1527 1527
1528 1528 XML_PROGRAMLISTING = YES
1529 1529
1530 1530 #---------------------------------------------------------------------------
1531 1531 # configuration options for the AutoGen Definitions output
1532 1532 #---------------------------------------------------------------------------
1533 1533
1534 1534 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1535 1535 # generate an AutoGen Definitions (see autogen.sf.net) file
1536 1536 # that captures the structure of the code including all
1537 1537 # documentation. Note that this feature is still experimental
1538 1538 # and incomplete at the moment.
1539 1539
1540 1540 GENERATE_AUTOGEN_DEF = NO
1541 1541
1542 1542 #---------------------------------------------------------------------------
1543 1543 # configuration options related to the Perl module output
1544 1544 #---------------------------------------------------------------------------
1545 1545
1546 1546 # If the GENERATE_PERLMOD tag is set to YES Doxygen will
1547 1547 # generate a Perl module file that captures the structure of
1548 1548 # the code including all documentation. Note that this
1549 1549 # feature is still experimental and incomplete at the
1550 1550 # moment.
1551 1551
1552 1552 GENERATE_PERLMOD = NO
1553 1553
1554 1554 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1555 1555 # the necessary Makefile rules, Perl scripts and LaTeX code to be able
1556 1556 # to generate PDF and DVI output from the Perl module output.
1557 1557
1558 1558 PERLMOD_LATEX = NO
1559 1559
1560 1560 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1561 1561 # nicely formatted so it can be parsed by a human reader. This is useful
1562 1562 # if you want to understand what is going on. On the other hand, if this
1563 1563 # tag is set to NO the size of the Perl module output will be much smaller
1564 1564 # and Perl will parse it just the same.
1565 1565
1566 1566 PERLMOD_PRETTY = YES
1567 1567
1568 1568 # The names of the make variables in the generated doxyrules.make file
1569 1569 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1570 1570 # This is useful so different doxyrules.make files included by the same
1571 1571 # Makefile don't overwrite each other's variables.
1572 1572
1573 1573 PERLMOD_MAKEVAR_PREFIX =
1574 1574
1575 1575 #---------------------------------------------------------------------------
1576 1576 # Configuration options related to the preprocessor
1577 1577 #---------------------------------------------------------------------------
1578 1578
1579 1579 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1580 1580 # evaluate all C-preprocessor directives found in the sources and include
1581 1581 # files.
1582 1582
1583 1583 ENABLE_PREPROCESSING = YES
1584 1584
1585 1585 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1586 1586 # names in the source code. If set to NO (the default) only conditional
1587 1587 # compilation will be performed. Macro expansion can be done in a controlled
1588 1588 # way by setting EXPAND_ONLY_PREDEF to YES.
1589 1589
1590 1590 MACRO_EXPANSION = NO
1591 1591
1592 1592 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1593 1593 # then the macro expansion is limited to the macros specified with the
1594 1594 # PREDEFINED and EXPAND_AS_DEFINED tags.
1595 1595
1596 1596 EXPAND_ONLY_PREDEF = NO
1597 1597
1598 1598 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1599 1599 # pointed to by INCLUDE_PATH will be searched when a #include is found.
1600 1600
1601 1601 SEARCH_INCLUDES = YES
1602 1602
1603 1603 # The INCLUDE_PATH tag can be used to specify one or more directories that
1604 1604 # contain include files that are not input files but should be processed by
1605 1605 # the preprocessor.
1606 1606
1607 1607 INCLUDE_PATH =
1608 1608
1609 1609 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1610 1610 # patterns (like *.h and *.hpp) to filter out the header-files in the
1611 1611 # directories. If left blank, the patterns specified with FILE_PATTERNS will
1612 1612 # be used.
1613 1613
1614 1614 INCLUDE_FILE_PATTERNS =
1615 1615
1616 1616 # The PREDEFINED tag can be used to specify one or more macro names that
1617 1617 # are defined before the preprocessor is started (similar to the -D option of
1618 1618 # gcc). The argument of the tag is a list of macros of the form: name
1619 1619 # or name=definition (no spaces). If the definition and the = are
1620 1620 # omitted =1 is assumed. To prevent a macro definition from being
1621 1621 # undefined via #undef or recursively expanded use the := operator
1622 1622 # instead of the = operator.
1623 1623
1624 PREDEFINED =
1624 PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
1625 1625
1626 1626 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1627 1627 # this tag can be used to specify a list of macro names that should be expanded.
1628 1628 # The macro definition that is found in the sources will be used.
1629 1629 # Use the PREDEFINED tag if you want to use a different macro definition that
1630 1630 # overrules the definition found in the source code.
1631 1631
1632 1632 EXPAND_AS_DEFINED =
1633 1633
1634 1634 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1635 1635 # doxygen's preprocessor will remove all references to function-like macros
1636 1636 # that are alone on a line, have an all uppercase name, and do not end with a
1637 1637 # semicolon, because these will confuse the parser if not removed.
1638 1638
1639 1639 SKIP_FUNCTION_MACROS = YES
1640 1640
1641 1641 #---------------------------------------------------------------------------
1642 1642 # Configuration::additions related to external references
1643 1643 #---------------------------------------------------------------------------
1644 1644
1645 1645 # The TAGFILES option can be used to specify one or more tagfiles. For each
1646 1646 # tag file the location of the external documentation should be added. The
1647 1647 # format of a tag file without this location is as follows:
1648 1648 # TAGFILES = file1 file2 ...
1649 1649 # Adding location for the tag files is done as follows:
1650 1650 # TAGFILES = file1=loc1 "file2 = loc2" ...
1651 1651 # where "loc1" and "loc2" can be relative or absolute paths
1652 1652 # or URLs. Note that each tag file must have a unique name (where the name does
1653 1653 # NOT include the path). If a tag file is not located in the directory in which
1654 1654 # doxygen is run, you must also specify the path to the tagfile here.
1655 1655
1656 1656 TAGFILES =
1657 1657
1658 1658 # When a file name is specified after GENERATE_TAGFILE, doxygen will create
1659 1659 # a tag file that is based on the input files it reads.
1660 1660
1661 1661 GENERATE_TAGFILE =
1662 1662
1663 1663 # If the ALLEXTERNALS tag is set to YES all external classes will be listed
1664 1664 # in the class index. If set to NO only the inherited external classes
1665 1665 # will be listed.
1666 1666
1667 1667 ALLEXTERNALS = NO
1668 1668
1669 1669 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1670 1670 # in the modules index. If set to NO, only the current project's groups will
1671 1671 # be listed.
1672 1672
1673 1673 EXTERNAL_GROUPS = YES
1674 1674
1675 1675 # The PERL_PATH should be the absolute path and name of the perl script
1676 1676 # interpreter (i.e. the result of `which perl').
1677 1677
1678 1678 PERL_PATH = /usr/bin/perl
1679 1679
1680 1680 #---------------------------------------------------------------------------
1681 1681 # Configuration options related to the dot tool
1682 1682 #---------------------------------------------------------------------------
1683 1683
1684 1684 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1685 1685 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1686 1686 # or super classes. Setting the tag to NO turns the diagrams off. Note that
1687 1687 # this option also works with HAVE_DOT disabled, but it is recommended to
1688 1688 # install and use dot, since it yields more powerful graphs.
1689 1689
1690 CLASS_DIAGRAMS = YES
1690 CLASS_DIAGRAMS = NO
1691 1691
1692 1692 # You can define message sequence charts within doxygen comments using the \msc
1693 1693 # command. Doxygen will then run the mscgen tool (see
1694 1694 # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1695 1695 # documentation. The MSCGEN_PATH tag allows you to specify the directory where
1696 1696 # the mscgen tool resides. If left empty the tool is assumed to be found in the
1697 1697 # default search path.
1698 1698
1699 1699 MSCGEN_PATH =
1700 1700
1701 1701 # If set to YES, the inheritance and collaboration graphs will hide
1702 1702 # inheritance and usage relations if the target is undocumented
1703 1703 # or is not a class.
1704 1704
1705 1705 HIDE_UNDOC_RELATIONS = YES
1706 1706
1707 1707 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1708 1708 # available from the path. This tool is part of Graphviz, a graph visualization
1709 1709 # toolkit from AT&T and Lucent Bell Labs. The other options in this section
1710 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 1714 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
1715 1715 # allowed to run in parallel. When set to 0 (the default) doxygen will
1716 1716 # base this on the number of processors available in the system. You can set it
1717 1717 # explicitly to a value larger than 0 to get control over the balance
1718 1718 # between CPU load and processing speed.
1719 1719
1720 DOT_NUM_THREADS = 0
1720 DOT_NUM_THREADS = 4
1721 1721
1722 1722 # By default doxygen will use the Helvetica font for all dot files that
1723 1723 # doxygen generates. When you want a differently looking font you can specify
1724 1724 # the font name using DOT_FONTNAME. You need to make sure dot is able to find
1725 1725 # the font, which can be done by putting it in a standard location or by setting
1726 1726 # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
1727 1727 # directory containing the font.
1728 1728
1729 1729 DOT_FONTNAME = Helvetica
1730 1730
1731 1731 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1732 1732 # The default size is 10pt.
1733 1733
1734 1734 DOT_FONTSIZE = 10
1735 1735
1736 1736 # By default doxygen will tell dot to use the Helvetica font.
1737 1737 # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
1738 1738 # set the path where dot can find it.
1739 1739
1740 1740 DOT_FONTPATH =
1741 1741
1742 1742 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1743 1743 # will generate a graph for each documented class showing the direct and
1744 1744 # indirect inheritance relations. Setting this tag to YES will force the
1745 1745 # CLASS_DIAGRAMS tag to NO.
1746 1746
1747 1747 CLASS_GRAPH = YES
1748 1748
1749 1749 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1750 1750 # will generate a graph for each documented class showing the direct and
1751 1751 # indirect implementation dependencies (inheritance, containment, and
1752 1752 # class references variables) of the class with other documented classes.
1753 1753
1754 1754 COLLABORATION_GRAPH = YES
1755 1755
1756 1756 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1757 1757 # will generate a graph for groups, showing the direct groups dependencies
1758 1758
1759 1759 GROUP_GRAPHS = YES
1760 1760
1761 1761 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1762 1762 # collaboration diagrams in a style similar to the OMG's Unified Modeling
1763 1763 # Language.
1764 1764
1765 1765 UML_LOOK = NO
1766 1766
1767 1767 # If the UML_LOOK tag is enabled, the fields and methods are shown inside
1768 1768 # the class node. If there are many fields or methods and many nodes the
1769 1769 # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
1770 1770 # threshold limits the number of items for each type to make the size more
1771 1771 # managable. Set this to 0 for no limit. Note that the threshold may be
1772 1772 # exceeded by 50% before the limit is enforced.
1773 1773
1774 1774 UML_LIMIT_NUM_FIELDS = 10
1775 1775
1776 1776 # If set to YES, the inheritance and collaboration graphs will show the
1777 1777 # relations between templates and their instances.
1778 1778
1779 1779 TEMPLATE_RELATIONS = NO
1780 1780
1781 1781 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1782 1782 # tags are set to YES then doxygen will generate a graph for each documented
1783 1783 # file showing the direct and indirect include dependencies of the file with
1784 1784 # other documented files.
1785 1785
1786 1786 INCLUDE_GRAPH = YES
1787 1787
1788 1788 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1789 1789 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1790 1790 # documented header file showing the documented files that directly or
1791 1791 # indirectly include this file.
1792 1792
1793 1793 INCLUDED_BY_GRAPH = YES
1794 1794
1795 1795 # If the CALL_GRAPH and HAVE_DOT options are set to YES then
1796 1796 # doxygen will generate a call dependency graph for every global function
1797 1797 # or class method. Note that enabling this option will significantly increase
1798 1798 # the time of a run. So in most cases it will be better to enable call graphs
1799 1799 # for selected functions only using the \callgraph command.
1800 1800
1801 CALL_GRAPH = NO
1801 CALL_GRAPH = YES
1802 1802
1803 1803 # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1804 1804 # doxygen will generate a caller dependency graph for every global function
1805 1805 # or class method. Note that enabling this option will significantly increase
1806 1806 # the time of a run. So in most cases it will be better to enable caller
1807 1807 # graphs for selected functions only using the \callergraph command.
1808 1808
1809 CALLER_GRAPH = NO
1809 CALLER_GRAPH = YES
1810 1810
1811 1811 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1812 1812 # will generate a graphical hierarchy of all classes instead of a textual one.
1813 1813
1814 1814 GRAPHICAL_HIERARCHY = YES
1815 1815
1816 1816 # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
1817 1817 # then doxygen will show the dependencies a directory has on other directories
1818 1818 # in a graphical way. The dependency relations are determined by the #include
1819 1819 # relations between the files in the directories.
1820 1820
1821 1821 DIRECTORY_GRAPH = YES
1822 1822
1823 1823 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1824 1824 # generated by dot. Possible values are svg, png, jpg, or gif.
1825 1825 # If left blank png will be used. If you choose svg you need to set
1826 1826 # HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1827 1827 # visible in IE 9+ (other browsers do not have this requirement).
1828 1828
1829 1829 DOT_IMAGE_FORMAT = png
1830 1830
1831 1831 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
1832 1832 # enable generation of interactive SVG images that allow zooming and panning.
1833 1833 # Note that this requires a modern browser other than Internet Explorer.
1834 1834 # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
1835 1835 # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1836 1836 # visible. Older versions of IE do not have SVG support.
1837 1837
1838 INTERACTIVE_SVG = NO
1838 INTERACTIVE_SVG = YES
1839 1839
1840 1840 # The tag DOT_PATH can be used to specify the path where the dot tool can be
1841 1841 # found. If left blank, it is assumed the dot tool can be found in the path.
1842 1842
1843 1843 DOT_PATH =
1844 1844
1845 1845 # The DOTFILE_DIRS tag can be used to specify one or more directories that
1846 1846 # contain dot files that are included in the documentation (see the
1847 1847 # \dotfile command).
1848 1848
1849 1849 DOTFILE_DIRS =
1850 1850
1851 1851 # The MSCFILE_DIRS tag can be used to specify one or more directories that
1852 1852 # contain msc files that are included in the documentation (see the
1853 1853 # \mscfile command).
1854 1854
1855 1855 MSCFILE_DIRS =
1856 1856
1857 1857 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1858 1858 # nodes that will be shown in the graph. If the number of nodes in a graph
1859 1859 # becomes larger than this value, doxygen will truncate the graph, which is
1860 1860 # visualized by representing a node as a red box. Note that doxygen if the
1861 1861 # number of direct children of the root node in a graph is already larger than
1862 1862 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1863 1863 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1864 1864
1865 1865 DOT_GRAPH_MAX_NODES = 50
1866 1866
1867 1867 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1868 1868 # graphs generated by dot. A depth value of 3 means that only nodes reachable
1869 1869 # from the root by following a path via at most 3 edges will be shown. Nodes
1870 1870 # that lay further from the root node will be omitted. Note that setting this
1871 1871 # option to 1 or 2 may greatly reduce the computation time needed for large
1872 1872 # code bases. Also note that the size of a graph can be further restricted by
1873 1873 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1874 1874
1875 1875 MAX_DOT_GRAPH_DEPTH = 0
1876 1876
1877 1877 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1878 1878 # background. This is disabled by default, because dot on Windows does not
1879 1879 # seem to support this out of the box. Warning: Depending on the platform used,
1880 1880 # enabling this option may lead to badly anti-aliased labels on the edges of
1881 1881 # a graph (i.e. they become hard to read).
1882 1882
1883 1883 DOT_TRANSPARENT = NO
1884 1884
1885 1885 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1886 1886 # files in one run (i.e. multiple -o and -T options on the command line). This
1887 1887 # makes dot run faster, but since only newer versions of dot (>1.8.10)
1888 1888 # support this, this feature is disabled by default.
1889 1889
1890 1890 DOT_MULTI_TARGETS = NO
1891 1891
1892 1892 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1893 1893 # generate a legend page explaining the meaning of the various boxes and
1894 1894 # arrows in the dot generated graphs.
1895 1895
1896 1896 GENERATE_LEGEND = YES
1897 1897
1898 1898 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1899 1899 # remove the intermediate dot files that are used to generate
1900 1900 # the various graphs.
1901 1901
1902 1902 DOT_CLEANUP = YES
@@ -1,48 +1,47
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22
23 23 #include <SDL.h>
24 24 #include <ili9328.h>
25 #include <stdint.h>
26 25
27 26 #define LCDILI9328 9328
28 27
29 28 extern SDL_Surface *screen;
30 29 extern SDL_Overlay *bmp;
31 30
32 31 extern void SDLCD_mkscreen(int resx,int resy,int bbp,int lcdtype);
33 32 extern int SDLCD_init();
34 33 extern void SDLCD_writereg(uint32_t reg,uint32_t data);
35 34 extern uint32_t SDLCD_readreg(uint32_t reg);
36 35 extern void SDLCD_writeGRAM(void* buffer,uint32_t count);
37 36 extern void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count);
38 37 extern void SDLCD_readGRAM(void* buffer,uint32_t count);
39 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 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2012, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@gmail.com
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef GENERICLCD_CONTROLER_H
23 23 #define GENERICLCD_CONTROLER_H
24 24
25 25 #include <uhandle.h>
26 #include <stdint.h>
27 26 #include <fonts.h>
28 27
29 28
30 29 typedef struct LCD_IF_t
31 30 {
32 31 int (*init)();
33 32 void (*writereg)(uint32_t reg,uint32_t data);
34 33 uint32_t (*readreg)(uint32_t reg);
35 34 void (*writeGRAM)(void* buffer,uint32_t count);
36 35 void (*readGRAM)(void* buffer,uint32_t count);
37 36 }LCD_IF_t;
38 37
39 38 typedef struct LCD_t
40 39 {
41 40 LCD_IF_t* interface;
42 41 int (*init)(struct LCD_t* LCD);
43 42 void (*paint)(struct LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
44 43 void (*paintText)(struct LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
45 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 45 void (*getPix)(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
47 46 void (*refreshenable)(struct LCD_t* LCD,int enable);
48 47 uint16_t width;
49 48 uint16_t height;
50 49 }LCD_t;
51 50
52 51
53 52 #endif /*GENERICLCD_CONTROLER_H*/
54 53
55 54
56 55
57 56
58 57
@@ -1,102 +1,99
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2012, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@gmail.com
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef ILI9328_H
23 23 #define ILI9328_H
24 24
25 #include <uhandle.h>
26 25 #include <genericLCD_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 26
30 27 extern int ili9328init(struct LCD_t* LCD);
31 28 extern void ili9328setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
32 29 extern void ili9328setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
33 30 extern void ili9328paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
34 31 extern void ili9328paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
35 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 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 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 35 extern void ili9328getPix(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
39 36 extern void ili9328refreshenable(struct LCD_t* LCD,int enable);
40 37 extern void ili9328paintChar(LCD_t* LCD,char buffer,uint16_t Xpos,uint16_t Ypos,sFONT* font,uint32_t color);
41 38
42 39 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 )
43 40 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 )
44 41 #define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint32_t) 0x0002 )
45 42 #define ILI9328_REGISTER_ENTRYMODE ((uint32_t) 0x0003 )
46 43 #define ILI9328_REGISTER_RESIZECONTROL ((uint32_t) 0x0004 )
47 44 #define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint32_t) 0x0007 )
48 45 #define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint32_t) 0x0008 )
49 46 #define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint32_t) 0x0009 )
50 47 #define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint32_t) 0x000A )
51 48 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint32_t) 0x000C )
52 49 #define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint32_t) 0x000D )
53 50 #define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint32_t) 0x000F )
54 51 #define ILI9328_REGISTER_POWERCONTROL1 ((uint32_t) 0x0010 )
55 52 #define ILI9328_REGISTER_POWERCONTROL2 ((uint32_t) 0x0011 )
56 53 #define ILI9328_REGISTER_POWERCONTROL3 ((uint32_t) 0x0012 )
57 54 #define ILI9328_REGISTER_POWERCONTROL4 ((uint32_t) 0x0013 )
58 55 #define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint32_t) 0x0020 )
59 56 #define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint32_t) 0x0021 )
60 57 #define ILI9328_REGISTER_WRITEDATATOGRAM ((uint32_t) 0x0022 )
61 58 #define ILI9328_REGISTER_POWERCONTROL7 ((uint32_t) 0x0029 )
62 59 #define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint32_t) 0x002B )
63 60 #define ILI9328_REGISTER_GAMMACONTROL1 ((uint32_t) 0x0030 )
64 61 #define ILI9328_REGISTER_GAMMACONTROL2 ((uint32_t) 0x0031 )
65 62 #define ILI9328_REGISTER_GAMMACONTROL3 ((uint32_t) 0x0032 )
66 63 #define ILI9328_REGISTER_GAMMACONTROL4 ((uint32_t) 0x0035 )
67 64 #define ILI9328_REGISTER_GAMMACONTROL5 ((uint32_t) 0x0036 )
68 65 #define ILI9328_REGISTER_GAMMACONTROL6 ((uint32_t) 0x0037 )
69 66 #define ILI9328_REGISTER_GAMMACONTROL7 ((uint32_t) 0x0038 )
70 67 #define ILI9328_REGISTER_GAMMACONTROL8 ((uint32_t) 0x0039 )
71 68 #define ILI9328_REGISTER_GAMMACONTROL9 ((uint32_t) 0x003C )
72 69 #define ILI9328_REGISTER_GAMMACONTROL10 ((uint32_t) 0x003D )
73 70 #define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint32_t) 0x0050 )
74 71 #define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint32_t) 0x0051 )
75 72 #define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint32_t) 0x0052 )
76 73 #define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint32_t) 0x0053 )
77 74 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint32_t) 0x0060 )
78 75 #define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint32_t) 0x0061 )
79 76 #define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint32_t) 0x006A )
80 77 #define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint32_t) 0x0080 )
81 78 #define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint32_t) 0x0081 )
82 79 #define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint32_t) 0x0082 )
83 80 #define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint32_t) 0x0083 )
84 81 #define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint32_t) 0x0084 )
85 82 #define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint32_t) 0x0085 )
86 83 #define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint32_t) 0x0090 )
87 84 #define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint32_t) 0x0092 )
88 85 #define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint32_t) 0x0095 )
89 86 #define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint32_t) 0x00A1 )
90 87 #define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint32_t) 0x00A2 )
91 88 #define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint32_t) 0x00A5 )
92 89
93 90 #ifdef _PRVATE_ILI9328_
94 91 void ili9328cpFrame(LCD_t* LCD,void* buffer,int x,int y,int w, int h);
95 92 #endif
96 93
97 94 #endif
98 95
99 96
100 97
101 98
102 99
@@ -1,93 +1,90
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@gmail.com
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef SSD2119_H
23 23 #define SSD2119_H
24 24
25 #include <uhandle.h>
26 25 #include <genericLCD_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 26
30 27 extern int ssd2119init(struct LCD_t* LCD);
31 28 extern void ssd2119setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H);
32 29 extern void ssd2119setGRAMaddress(LCD_t* LCD,uint16_t Haddress,uint16_t Vaddress);
33 30 extern void ssd2119paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height);
34 31 extern void ssd2119paintText(LCD_t* LCD,char* buffer,uint16_t Xpos,uint16_t Ypos,sFONT *font,uint32_t color);
35 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 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 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 35 extern void ssd2119refreshenable(struct LCD_t* LCD,int enable);
39 36
40 37 /* SSD2119 registers */
41 38
42 39 #define SSD2119_REGISTER_DEVICE_CODE_READ ((uint32_t)0x00)
43 40 #define SSD2119_REGISTER_OSC_START ((uint32_t)0x00)
44 41 #define SSD2119_REGISTER_OUTPUT_CTRL ((uint32_t)0x01)
45 42 #define SSD2119_REGISTER_LCD_DRIVE_AC_CTRL ((uint32_t)0x02)
46 43 #define SSD2119_REGISTER_PWR_CTRL_1 ((uint32_t)0x03)
47 44 #define SSD2119_REGISTER_DISPLAY_CTRL ((uint32_t)0x07)
48 45 #define SSD2119_REGISTER_FRAME_CYCLE_CTRL ((uint32_t)0x0B)
49 46 #define SSD2119_REGISTER_PWR_CTRL_2 ((uint32_t)0x0C)
50 47 #define SSD2119_REGISTER_PWR_CTRL_3 ((uint32_t)0x0D)
51 48 #define SSD2119_REGISTER_PWR_CTRL_4 ((uint32_t)0x0E)
52 49 #define SSD2119_REGISTER_GATE_SCAN_START ((uint32_t)0x0F)
53 50 #define SSD2119_REGISTER_SLEEP_MODE_1 ((uint32_t)0x10)
54 51 #define SSD2119_REGISTER_ENTRY_MODE ((uint32_t)0x11)
55 52 #define SSD2119_REGISTER_SLEEP_MODE_2 ((uint32_t)0x12)
56 53 #define SSD2119_REGISTER_GEN_IF_CTRL ((uint32_t)0x15)
57 54 #define SSD2119_REGISTER_H_PORCH ((uint32_t)0x16)
58 55 #define SSD2119_REGISTER_V_PORCH ((uint32_t)0x17)
59 56 #define SSD2119_REGISTER_PWR_CTRL_5 ((uint32_t)0x1E)
60 57 #define SSD2119_REGISTER_UNIFORMITY ((uint32_t)0x20)
61 58 #define SSD2119_REGISTER_RAM_DATA ((uint32_t)0x22)
62 59 #define SSD2119_REGISTER_FRAME_FREQ ((uint32_t)0x25)
63 60 #define SSD2119_REGISTER_ANALOG_SET ((uint32_t)0x26)
64 61 #define SSD2119_REGISTER_VCOM_OTP_1 ((uint32_t)0x28)
65 62 #define SSD2119_REGISTER_VCOM_OTP_2 ((uint32_t)0x29)
66 63 #define SSD2119_REGISTER_GAMMA_CTRL_1 ((uint32_t)0x30)
67 64 #define SSD2119_REGISTER_GAMMA_CTRL_2 ((uint32_t)0x31)
68 65 #define SSD2119_REGISTER_GAMMA_CTRL_3 ((uint32_t)0x32)
69 66 #define SSD2119_REGISTER_GAMMA_CTRL_4 ((uint32_t)0x33)
70 67 #define SSD2119_REGISTER_GAMMA_CTRL_5 ((uint32_t)0x34)
71 68 #define SSD2119_REGISTER_GAMMA_CTRL_6 ((uint32_t)0x35)
72 69 #define SSD2119_REGISTER_GAMMA_CTRL_7 ((uint32_t)0x36)
73 70 #define SSD2119_REGISTER_GAMMA_CTRL_8 ((uint32_t)0x37)
74 71 #define SSD2119_REGISTER_GAMMA_CTRL_9 ((uint32_t)0x3A)
75 72 #define SSD2119_REGISTER_GAMMA_CTRL_10 ((uint32_t)0x3B)
76 73 #define SSD2119_REGISTER_V_SCROLL_1 ((uint32_t)0x41)
77 74 #define SSD2119_REGISTER_V_SCROLL_2 ((uint32_t)0x42)
78 75 #define SSD2119_REGISTER_V_RAM_POS ((uint32_t)0x44)
79 76 #define SSD2119_REGISTER_H_RAM_START ((uint32_t)0x45)
80 77 #define SSD2119_REGISTER_H_RAM_END ((uint32_t)0x46)
81 78 #define SSD2119_REGISTER_1_DRV_POS_1 ((uint32_t)0x48)
82 79 #define SSD2119_REGISTER_1_DRV_POS_2 ((uint32_t)0x49)
83 80 #define SSD2119_REGISTER_2_DRV_POS_1 ((uint32_t)0x4A)
84 81 #define SSD2119_REGISTER_2_DRV_POS_2 ((uint32_t)0x4B)
85 82 #define SSD2119_REGISTER_X_RAM_ADDR ((uint32_t)0x4E)
86 83 #define SSD2119_REGISTER_Y_RAM_ADDR ((uint32_t)0x4F)
87 84
88 85 #endif
89 86
90 87
91 88
92 89
93 90
@@ -1,72 +1,70
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2012, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef TERMINAL_H
23 23 #define TERMINAL_H
24 #include <stdint.h>
25 24 #include <widget.h>
26 25 #include <streamdevices.h>
27 26 #include <genericLCD_Controler.h>
28 #include <fonts.h>
29 27
30 28 typedef struct terminal_t
31 29 {
32 30 uint16_t line;
33 31 uint16_t column;
34 32 uint16_t lineCount;
35 33 uint16_t columnCount;
36 34 uint16_t firstLine;
37 35 uint16_t lastLine;
38 36 uint16_t Xpos;
39 37 uint16_t Ypos;
40 38 uint16_t width;
41 39 uint16_t height;
42 40 uint32_t backgroundColor;
43 41 uint32_t textColor;
44 42 int8_t verticalSpace;
45 43 int8_t horizontalSpace;
46 44 int8_t empty;
47 45 LCD_t* LCD;
48 46 sFONT* font;
49 47 char* buffer;
50 48 }terminal_t;
51 49
52 50 int terminal_init(terminal_t* terminal,LCD_t* LCD,sFONT* font,streamdevice* strdev);
53 51 void terminal_setgeometry(terminal_t* terminal,uint16_t Xpos,uint16_t Ypos,uint16_t width,uint16_t height);
54 52 void terminal_clear(terminal_t* terminal);
55 53 void terminal_setbackgroundColor(terminal_t* terminal, uint32_t backgrooundColor);
56 54 void terminal_settextColor(terminal_t* terminal, uint32_t textColor);
57 55 void terminal_movecursor(terminal_t* terminal,int n);
58 56 void terminal_clearCurentLine(terminal_t* terminal);
59 57 int terminal_write(streamdevice* device,void* data,int size, int n);
60 58 int terminal_read(streamdevice* device,void* data,int size, int n);
61 59 int terminal_setpos(streamdevice* device,int pos);
62 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 70 #endif
@@ -1,63 +1,60
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef STMPE811_H
23 23 #define STMPE811_H
24 24 #include <stdio.h>
25 #include <uhandle.h>
26 25 #include <genericTC_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 26 #include <spi.h>
30 27
31 28 typedef struct ADS7843_t
32 29 {
33 30 spi_t spidev;
34 31 void (*setnCS)(char);
35 32 int (*busy)();
36 33 }ADS7843_t;
37 34
38 35
39 36 extern int ads7843init(ADS7843_t *dev, spi_t spidev,void (*setnCS)(char),int (*busy)());
40 37 extern int ads7843read(ADS7843_t *dev,int* x,int* y);
41 38
42 39
43 40
44 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 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef STMPE811_H
23 23 #define STMPE811_H
24 24 #include <stdio.h>
25 #include <uhandle.h>
26 25 #include <genericTC_Controler.h>
27 #include <stdint.h>
28 #include <fonts.h>
29 26 #include <i2c.h>
30 27
31 28 typedef struct STMPE811_t
32 29 {
33 30 i2c_t i2cdev;
34 31 uint8_t devAddress;
35 32 }STMPE811_t;
36 33
37 34
38 35 extern int stmpe811init(STMPE811_t *dev, i2c_t i2cdev, uint8_t A0);
39 36 extern int stmpe811getID(STMPE811_t *dev);
40 37
41 38
42 39
43 40 #define STMPE811_REGISTER_CHIP_ID ((uint32_t) 0x0000 )
44 41 #define STMPE811_REGISTER_ID_VER ((uint32_t) 0x0002 )
45 42 #define STMPE811_REGISTER_SYS_CTRL1 ((uint32_t) 0x0003 )
46 43 #define STMPE811_REGISTER_SYS_CTRL2 ((uint32_t) 0x0004 )
47 44 #define STMPE811_REGISTER_SPI_CFG ((uint32_t) 0x0008 )
48 45 #define STMPE811_REGISTER_INT_CTRL ((uint32_t) 0x0009 )
49 46 #define STMPE811_REGISTER_INT_EN ((uint32_t) 0x000A )
50 47 #define STMPE811_REGISTER_INT_STA ((uint32_t) 0x000B )
51 48 #define STMPE811_REGISTER_GPIO_EN ((uint32_t) 0x000C )
52 49 #define STMPE811_REGISTER_GPIO_INT_STA ((uint32_t) 0x000D )
53 50 #define STMPE811_REGISTER_ADC_INT_EN ((uint32_t) 0x000E )
54 51 #define STMPE811_REGISTER_ADC_INT_STA ((uint32_t) 0x000F )
55 52 #define STMPE811_REGISTER_GPIO_SET_PIN ((uint32_t) 0x0010 )
56 53 #define STMPE811_REGISTER_GPIO_CLR_PIN ((uint32_t) 0x0011 )
57 54 #define STMPE811_REGISTER_GPIO_MP_STA ((uint32_t) 0x0012 )
58 55 #define STMPE811_REGISTER_GPIO_DIR ((uint32_t) 0x0013 )
59 56 #define STMPE811_REGISTER_GPIO_ED ((uint32_t) 0x0014 )
60 57 #define STMPE811_REGISTER_GPIO_RE ((uint32_t) 0x0015 )
61 58 #define STMPE811_REGISTER_GPIO_FE ((uint32_t) 0x0016 )
62 59 #define STMPE811_REGISTER_GPIO_AF ((uint32_t) 0x0017 )
63 60 #define STMPE811_REGISTER_ADC_CTRL1 ((uint32_t) 0x0020 )
64 61 #define STMPE811_REGISTER_ADC_CTRL2 ((uint32_t) 0x0021 )
65 62 #define STMPE811_REGISTER_ADC_CAPT ((uint32_t) 0x0022 )
66 63 #define STMPE811_REGISTER_ADC_DATA_CH0 ((uint32_t) 0x0030 )
67 64 #define STMPE811_REGISTER_ADC_DATA_CH1 ((uint32_t) 0x0032 )
68 65 #define STMPE811_REGISTER_ADC_DATA_CH2 ((uint32_t) 0x0034 )
69 66 #define STMPE811_REGISTER_ADC_DATA_CH3 ((uint32_t) 0x0036 )
70 67 #define STMPE811_REGISTER_ADC_DATA_CH4 ((uint32_t) 0x0038 )
71 68 #define STMPE811_REGISTER_ADC_DATA_CH5 ((uint32_t) 0x003A )
72 69 #define STMPE811_REGISTER_ADC_DATA_CH6 ((uint32_t) 0x003C )
73 70 #define STMPE811_REGISTER_ADC_DATA_CH7 ((uint32_t) 0x003E )
74 71 #define STMPE811_REGISTER_TSC_CTRL ((uint32_t) 0x0040 )
75 72 #define STMPE811_REGISTER_TSC_CFG ((uint32_t) 0x0041 )
76 73 #define STMPE811_REGISTER_WDW_TR_X ((uint32_t) 0x0042 )
77 74 #define STMPE811_REGISTER_WDW_TR_Y ((uint32_t) 0x0044 )
78 75 #define STMPE811_REGISTER_WDW_BL_X ((uint32_t) 0x0046 )
79 76 #define STMPE811_REGISTER_WDW_BL_Y ((uint32_t) 0x0048 )
80 77 #define STMPE811_REGISTER_FIFO_TH ((uint32_t) 0x004A )
81 78 #define STMPE811_REGISTER_FIFO_STA ((uint32_t) 0x004B )
82 79 #define STMPE811_REGISTER_FIFO_SIZE ((uint32_t) 0x004C )
83 80 #define STMPE811_REGISTER_TSC_DATA_X ((uint32_t) 0x004D )
84 81 #define STMPE811_REGISTER_TSC_DATA_Y ((uint32_t) 0x004F )
85 82 #define STMPE811_REGISTER_TSC_DATA_Z ((uint32_t) 0x0051 )
86 83 #define STMPE811_REGISTER_TSC_DATA_XYZ ((uint32_t) 0x0052 )
87 84 #define STMPE811_REGISTER_TSC_FRACTION_Z ((uint32_t) 0x0056 )
88 85 #define STMPE811_REGISTER_TSC_DATA ((uint32_t) 0x0057 )
89 86 #define STMPE811_REGISTER_TSC_I_DRIVE ((uint32_t) 0x0058 )
90 87 #define STMPE811_REGISTER_TSC_SHIELD ((uint32_t) 0x0059 )
91 88 #define STMPE811_REGISTER_TEMP_CTRL ((uint32_t) 0x0060 )
92 89 #define STMPE811_REGISTER_TEMP_DATA ((uint32_t) 0x0061 )
93 90 #define STMPE811_REGISTER_TEMP_TH ((uint32_t) 0x0062 )
94 91
95 92
96 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 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef GENERICTC_CONTROLER_H
23 23 #define GENERICTC_CONTROLER_H
24 24
25 25 #include <uhandle.h>
26 #include <stdint.h>
27 26 #include <fonts.h>
28 27
29 28
30 29
31 30
32 31 #endif /*GENERICTC_CONTROLER_H*/
33 32
34 33
35 34
36 35
37 36
@@ -1,72 +1,71
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2012, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@gmail.com
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef STREAMDEVICES_H
23 23 #define STREAMDEVICES_H
24 24 #include <uhandle.h>
25 #include <stdint.h>
26 25
27 26 typedef struct streamdevice* streamdeviceptr;
28 27 struct streamdevice_ops;
29 28
30 29 typedef volatile struct streamdevice
31 30 {
32 31 struct streamdevice_ops* ops;
33 32 volatile uint32_t streamPt;
34 33 volatile UHANDLE _stream;
35 34 volatile uint32_t mode;
36 35 }streamdevice;
37 36
38 37
39 38 typedef struct streamdevice_ops
40 39 {
41 40 int (*write)(streamdevice* device,void* data,int size, int n);
42 41 int (*read)(streamdevice* device,void* data,int size, int n);
43 42 int (*setpos)(streamdevice* device,int pos);
44 43 int (*close)(streamdevice* device);
45 44 }streamdevice_ops;
46 45
47 46
48 47
49 48 typedef int (*write_t)(streamdeviceptr device,void* data,int size, int n);
50 49 typedef int (*read_t)(streamdeviceptr device,void* data,int size, int n);
51 50 typedef int (*setpos_t)(streamdeviceptr device,int pos);
52 51 typedef int (*close_t)(streamdeviceptr device);
53 52
54 53
55 54
56 55
57 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 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef THREAD_H
23 23 #define THREAD_H
24 24 #include <stdint.h>
25 #include <uhandle.h>
26 #include <streamdevices.h>
27 25
28 26 #ifdef __cplusplus
29 27 extern "C" {
30 28 #endif
31 29
32 30 /*
33 31 This structure holds the thread context. To do so, you need to keep a track of the programm counter,
34 32 to change the stack pointer for each thread and to save all registers needing to be saved. Since the
35 33 number of regiter to be saved vary from one processor to an other, it's easier to save them in the
36 34 owner thread stack;
37 35 */
38 36 typedef struct thread_t
39 37 {
40 38 int (*func)(void*);
41 39 void* __stack__;
42 40 int stackSize;
43 41 int priority;
44 42 struct thread_t* prev;
45 43 struct thread_t* next;
46 44 }thread_t;
47 45
48 46
49 47 extern int threadcreate(thread_t* thread,void* stack,int stackSize,int (*func)(void*));
50 48 extern int threadstart(thread_t* thread);
51 49 extern int threadstop(thread_t* thread);
52 50
53 51 #ifdef __THREAD_PRIVATE__
54 52 extern void __cpusavecontext(void* dataspace);
55 53 extern void __cpurestorecontext(void* dataspace);
56 54 extern void __initThreading();
57 55 extern thread_t mainThread;
58 56 #endif
59 57
60 58 #ifdef __cplusplus
61 59 }
62 60 #endif
63 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 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2012, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@gmail.com
21 21 -------------------------------------------------------------------------------*/
22 22 #ifndef UHANDLE_H
23 23 #define UHANDLE_H
24
24 #include <stdint.h>
25 25 typedef volatile void* UHANDLE;
26 26
27 27 #define uhandlevalide(HANDLE) ((HANDLE)!=0)
28 28
29 29 #endif
@@ -1,87 +1,94
1 1 #
2 2 # Libuc2 common rules
3 3 #
4 4 #
5 5
6 6 defineTest(copyFiles) {
7 7 files = $$1
8 8 DDIR = $$2
9 9 win32:DDIR ~= s,/,\\,g
10 10 QMAKE_POST_LINK += $$QMAKE_MKDIR $$quote($$DDIR) $$escape_expand(\\n\\t)
11 11 for(FILE, files) {
12 12 message(copying file $$FILE)
13 13 # Replace slashes in paths with backslashes for Windows
14 14 win32:FILE ~= s,/,\\,g
15 15 QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($$DDIR) $$escape_expand(\\n\\t)
16 16 }
17 17 export(QMAKE_POST_LINK)
18 18 }
19 19
20 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 28 $$[QT_INSTALL_HEADERS]/GRAPHIC/CONTROLERS \
22 29 $$[QT_INSTALL_HEADERS]/GRAPHIC/TC_CONTROLERS \
23 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/FONTS \
24 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/Widgets
30 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/FONTS \
31 $$[QT_INSTALL_HEADERS]/GRAPHIC/GUI/Widgets
25 32
26 33 #
27 34 # Microcontroler switch
28 35 #
29 36 #
30 37 contains( TEMPLATE, app ) {
31 38 !isEmpty( BSP ) {
32 39 include(./boards/$$BSP/bsp.pri)
33 40 }
34 41 INCLUDEPATH+= $$[QT_INSTALL_PREFIX]/bsp/src/$$BSP
35 42 CONFIG += link_prl
36 43 OBJECTS_DIR=obj-$$UCMODEL
37 44 DESTDIR=bin-$$UCMODEL
38 45 }
39 46
40 47 !isEmpty( UCMODEL ) {
41 48 include(./$$UCMODEL/cpu.pri)
42 49 include(./$$UCMODEL/qmake.conf)
43 50 }
44 51
45 52 !isEmpty(FILESTOCOPY.files) {
46 53 copyFiles($$FILESTOCOPY.files,$$FILESTOCOPY.path)
47 54 }
48 55
49 56 contains( TEMPLATE, lib ) {
50 57
51 58 CONFIG+=staticlib
52 59 OBJECTS_DIR=obj-$$UCMODEL
53 60
54 61 contains( CONFIG, libuc2lib) {
55 62 CONFIG += create_prl
56 63 DESTDIR=$$[QT_INSTALL_LIBS]/$$UCMODEL
57 64 }else{
58 65 contains( CONFIG, bsp) {
59 66 DESTDIR=$$[QT_INSTALL_PREFIX]/bsp/lib/$$BSP
60 67 CONFIG += create_prl
61 68 !isEmpty( BSPFILE ) {
62 69 #bspFileCopy.target = bspFileCopy
63 70 #bspFileCopy.commands = echo hello
64 71 #QMAKE_EXTRA_TARGETS += bspFileCopy
65 72 #target.depend += bspFileCopy
66 73 #PRE_TARGETDEPS += bspFileCopy
67 74 copyFiles($$BSPFILE,$$[QT_INSTALL_PREFIX]/mkspecs/features/boards/$$BSP)
68 75 }
69 76 }else{
70 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 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3 TARGET = vs10XX
4 4
5 5 SOURCES += VS10XX.c
6 6
7 7 UCMODEL=simulator
8 8
9 HEADERS += \
10 ../../../../include/AUDIO/VS10XX.h
9 11
12
@@ -1,9 +1,13
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3 TARGET = vs10XX
4 4
5 5 SOURCES += VS10XX.c
6 6
7 7
8 8 UCMODEL=stm32f4
9 9
10 HEADERS += \
11 ../../../../include/AUDIO/VS10XX.h
12
13
@@ -1,8 +1,11
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3 TARGET = ina226
4 4
5 5 SOURCES += ina226.c
6 6
7 7 UCMODEL=simulator
8 8
9 HEADERS += \
10 ../../../../include/POWER/ina226.h
11
@@ -1,8 +1,11
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3 TARGET = ina226
4 4
5 5 SOURCES += ina226.c
6 6
7 7 UCMODEL=stm32f4
8 8
9 HEADERS += \
10 ../../../../include/POWER/ina226.h
11
@@ -1,333 +1,333
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the libuc, microcontroler library
3 3 -- Copyright (C) 2013, Alexis Jeandet
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------
19 19 -- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@member.fsf.org
21 21 -------------------------------------------------------------------------------*/
22 22
23 23 #include <SDL.h>
24 24 #include <malloc.h>
25 #include "SDLCD.h"
25 #include <SDLCD.h>
26 26
27 27 SDL_Surface *screen;
28 28 SDL_Overlay *bmp;
29 29
30 30 int SDLCD_Xpos=0;
31 31 int SDLCD_Ypos=0;
32 32 int SDLCD_XWinStrt=0;
33 33 int SDLCD_YWinStrt=0;
34 34 int SDLCD_XWinEnd=0;
35 35 int SDLCD_YWinEnd=0;
36 36
37 37 void* SDLCD_buffer;
38 38 int SDLCD_bpp;
39 39 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
40 40
41 41 static Uint32 sdl_refresh_timer(Uint32 interval, void *opaque) {
42 42
43 43 if ( SDL_MUSTLOCK(screen) ) {
44 44 if ( SDL_LockSurface(screen) < 0 ) {
45 45 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
46 46 return interval;
47 47 }
48 48 }
49 49 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
50 50 SDL_Flip(screen);
51 51 if ( SDL_MUSTLOCK(screen) ) {
52 52 SDL_UnlockSurface(screen);
53 53 }
54 54 return interval; /* 0 means stop timer */
55 55 }
56 56
57 57 void SDLCD_mkscreen(int resx,int resy,int bpp,int lcdtype)
58 58 {
59 59 int i=0;
60 60 if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)) {
61 61 fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
62 62 exit(1);
63 63 }
64 64 screen = SDL_SetVideoMode(resx, resy, bpp, SDL_DOUBLEBUF);
65 65 if(!screen) {
66 66 fprintf(stderr, "SDL: could not set video mode - exiting\n");
67 67 exit(1);
68 68 }
69 69 if ( SDL_MUSTLOCK(screen) ) {
70 70 if ( SDL_LockSurface(screen) < 0 ) {
71 71 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
72 72 return;
73 73 }
74 74 }
75 75 SDL_UpdateRect(screen, 0, 0, resx, resy);
76 76 if ( SDL_MUSTLOCK(screen) ) {
77 77 SDL_UnlockSurface(screen);
78 78 }
79 79 SDLCD_buffer = malloc(resx*resy*bpp/8);
80 80 SDLCD_bpp = bpp;
81 81 for(i=0;i<(resx*resy);i++)
82 82 {
83 83 SDLCD_putpixel(screen, i%resx, (i/resx), 0xFFFF);
84 84 }
85 85 SDL_AddTimer(10, sdl_refresh_timer, NULL);
86 86 }
87 87
88 88
89 89
90 90 int SDLCD_init()
91 91 {
92 92
93 93 }
94 94
95 95 void SDLCD_writereg(uint32_t reg,uint32_t data)
96 96 {
97 97 switch (reg) {
98 98 case ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET:
99 99 if((data>=screen->w) || (data<0))
100 100 printf("Warning printing out of bounds HORIZONTALGRAMADDRESSSET=%d",data);
101 101 SDLCD_Xpos = data;
102 102 break;
103 103 case ILI9328_REGISTER_VERTICALGRAMADDRESSSET:
104 104 if((data>=screen->h) || (data<0))
105 105 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALGRAMADDRESSSET=%d",data);
106 106 SDLCD_Ypos = data;
107 107 break;
108 108 case ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION:
109 109 if((data>=screen->w) || (data<0))
110 110 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION=%d",data);
111 111 SDLCD_XWinStrt = data;
112 112 break;
113 113 case ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION:
114 114 if((data>=screen->w) || (data<0))
115 115 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION=%d",data);
116 116 SDLCD_XWinEnd = data;
117 117 break;
118 118 case ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION:
119 119 if((data>=screen->h) || (data<0))
120 120 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION=%d",data);
121 121 SDLCD_YWinStrt = data;
122 122 break;
123 123 case ILI9328_REGISTER_VERTICALADDRESSENDPOSITION:
124 124 if((data>=screen->h) || (data<0))
125 125 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSENDPOSITION=%d",data);
126 126 SDLCD_YWinEnd = data;
127 127 break;
128 128 default:
129 129 break;
130 130 }
131 131 }
132 132
133 133 uint32_t SDLCD_readreg(uint32_t reg)
134 134 {
135 135 return 0;
136 136 }
137 137
138 138
139 139 void SDLCD_putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
140 140 {
141 141 int bpp = surface->format->BytesPerPixel;
142 142 /* Here p is the address to the pixel we want to set */
143 143 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
144 144 switch(bpp) {
145 145 case 1:
146 146 *p = pixel;
147 147 break;
148 148 case 2:
149 149 *(Uint16 *)p = pixel;
150 150 break;
151 151 case 3:
152 152 if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
153 153 p[0] = (pixel >> 16) & 0xff;
154 154 p[1] = (pixel >> 8) & 0xff;
155 155 p[2] = pixel & 0xff;
156 156 } else {
157 157 p[0] = pixel & 0xff;
158 158 p[1] = (pixel >> 8) & 0xff;
159 159 p[2] = (pixel >> 16) & 0xff;
160 160 }
161 161 break;
162 162 case 4:
163 163 *(Uint32 *)p = pixel;
164 164 break;
165 165 }
166 166 }
167 167
168 168 void SDLCD_putpixel_16bpp(SDL_Surface *surface, int x, int y, Uint32 pixel)
169 169 {
170 170 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
171 171 *(Uint16 *)p = pixel;
172 172 }
173 173
174 174 Uint32 SDLCD_getpixel_16bpp(SDL_Surface *surface, int x, int y)
175 175 {
176 176 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel;
177 177 return *(Uint16 *)p;
178 178 }
179 179
180 180 Uint32 SDLCD_getpixel(SDL_Surface *surface, int x, int y)
181 181 {
182 182 int bpp = surface->format->BytesPerPixel;
183 183 /* Here p is the address to the pixel we want to retrieve */
184 184 Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
185 185 switch(bpp) {
186 186 case 1:
187 187 return *p;
188 188 case 2:
189 189 return *(Uint16 *)p;
190 190 case 3:
191 191 if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
192 192 return p[0] << 16 | p[1] << 8 | p[2];
193 193 else
194 194 return p[0] | p[1] << 8 | p[2] << 16;
195 195 case 4:
196 196 return *(Uint32 *)p;
197 197 default:
198 198 return 0;
199 199 }
200 200 /* shouldn’t happen, but avoids warnings */
201 201 }
202 202
203 203 void SDLCD_writeGRAM(void* buffer,uint32_t count)
204 204 {
205 205 int i=0;
206 206 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
207 207 u_int16_t* inptr=(u_int16_t*)buffer;
208 208 if ( SDL_MUSTLOCK(screen) ) {
209 209 if ( SDL_LockSurface(screen) < 0 ) {
210 210 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
211 211 return;
212 212 }
213 213 }
214 214 for(i=0;i<count;i++)
215 215 {
216 216 SDLCD_putpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos,inptr[i]);
217 217 SDLCD_Xpos+=1;
218 218 ptr[i]=inptr[i];
219 219 if(SDLCD_Xpos>=SDLCD_XWinEnd)
220 220 {
221 221 SDLCD_Xpos=SDLCD_XWinStrt;
222 222 SDLCD_Ypos+=1;
223 223 }
224 224 if(SDLCD_Ypos>=SDLCD_YWinEnd)
225 225 {
226 226 SDLCD_Ypos=SDLCD_YWinStrt;
227 227 }
228 228 }
229 229 if ( SDL_MUSTLOCK(screen) ) {
230 230 SDL_UnlockSurface(screen);
231 231 }
232 232 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
233 233 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
234 234 }
235 235
236 236 void SDLCD_writeGRAM_16bpp(void* buffer,uint32_t count)
237 237 {
238 238 int i=0;
239 239 u_int16_t* inptr=(u_int16_t*)buffer;
240 240 if ( SDL_MUSTLOCK(screen) ) {
241 241 if ( SDL_LockSurface(screen) < 0 ) {
242 242 fprintf(stderr, "Can’t lock screen: %s\n", SDL_GetError());
243 243 return;
244 244 }
245 245 }
246 246 for(i=0;i<count;i++)
247 247 {
248 248 *(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos)=inptr[i];
249 249 SDLCD_Xpos+=1;
250 250 if(SDLCD_Xpos>=SDLCD_XWinEnd)
251 251 {
252 252 SDLCD_Xpos=SDLCD_XWinStrt;
253 253 SDLCD_Ypos+=1;
254 254 }
255 255 if(SDLCD_Ypos>=SDLCD_YWinEnd)
256 256 {
257 257 SDLCD_Ypos=SDLCD_YWinStrt;
258 258 }
259 259 }
260 260 if ( SDL_MUSTLOCK(screen) ) {
261 261 SDL_UnlockSurface(screen);
262 262 }
263 263 // SDL_UpdateRect(screen, SDLCD_XWinStrt, SDLCD_YWinStrt, SDLCD_XWinEnd-SDLCD_XWinStrt, SDLCD_YWinEnd-SDLCD_YWinStrt);
264 264 //SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
265 265 }
266 266
267 267 void SDLCD_readGRAM_16bpp(void* buffer,uint32_t count)
268 268 {
269 269 int i=0;
270 270 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
271 271 u_int16_t* inptr=(u_int16_t*)buffer;
272 272 for(i=0;i<count;i++)
273 273 {
274 274 inptr[i]=*(( Uint16 * ) screen->pixels + SDLCD_Ypos * screen->pitch / 2 + SDLCD_Xpos);
275 275 SDLCD_Xpos+=1;
276 276 ptr[i]=inptr[i];
277 277 if(SDLCD_Xpos>=SDLCD_XWinEnd)
278 278 {
279 279 SDLCD_Xpos=SDLCD_XWinStrt;
280 280 SDLCD_Ypos+=1;
281 281 }
282 282 if(SDLCD_Ypos>=SDLCD_YWinEnd)
283 283 {
284 284 SDLCD_Ypos=SDLCD_YWinStrt;
285 285 }
286 286 }
287 287
288 288 }
289 289
290 290 void SDLCD_readGRAM(void* buffer,uint32_t count)
291 291 {
292 292 int i=0;
293 293 u_int16_t* ptr=(u_int16_t*)SDLCD_buffer;
294 294 u_int16_t* inptr=(u_int16_t*)buffer;
295 295 for(i=0;i<count;i++)
296 296 {
297 297 inptr[i]=SDLCD_getpixel_16bpp(screen,SDLCD_Xpos,SDLCD_Ypos);
298 298 SDLCD_Xpos+=1;
299 299 ptr[i]=inptr[i];
300 300 if(SDLCD_Xpos>=SDLCD_XWinEnd)
301 301 {
302 302 SDLCD_Xpos=SDLCD_XWinStrt;
303 303 SDLCD_Ypos+=1;
304 304 }
305 305 if(SDLCD_Ypos>=SDLCD_YWinEnd)
306 306 {
307 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 1 #include <stdio.h>
2 2 #include <stm32f4xx.h>
3 3
4 4 void NMI_Handler(void)
5 5 {
6 6 printf("NMI_Handler\n");
7 7 }
8 8
9 9 void HardFault_Handler(void)
10 10 {
11 11 printf("HardFault_Handler\n");
12 12 }
13 13
14 14 void MemManage_Handler(void)
15 15 {
16 16 printf("MemManage_Handler\n");
17 17 }
18 18
19 19 void BusFault_Handler(void)
20 20 {
21 21 printf("BusFault_Handler\n");
22 22 }
23 23
24 24 void UsageFault_Handler(void)
25 25 {
26 26 printf("UsageFault_Handler\n");
27 27 }
28 28
29 29 void SVC_Handler(void)
30 30 {
31 31 // __set_CONTROL(2);
32 // printf("SVC_Handler\n");
32 printf("SVC_Handler\n");
33 33 }
34 34
35 35 void DebugMon_Handler(void)
36 36 {
37 37 printf("DebugMon_Handler\n");
38 38 }
39 39
40 40 void PendSV_Handler(void)
41 41 {
42 42 printf("PendSV_Handler\n");
43 43 }
44 44
45 45 void WWDG_IRQHandler(void)
46 46 {
47 47 printf("WWDG_IRQHandler\n");
48 48 }
49 49
50 50 void PVD_IRQHandler(void)
51 51 {
52 52 printf("PVD_IRQHandler\n");
53 53 }
54 54
55 55 void TAMP_STAMP_IRQHandler(void)
56 56 {
57 57 printf("TAMP_STAMP_IRQHandler\n");
58 58 }
59 59
60 60 void RTC_WKUP_IRQHandler(void)
61 61 {
62 62 printf("RTC_WKUP_IRQHandler\n");
63 63 }
64 64
65 65 void FLASH_IRQHandler(void)
66 66 {
67 67 printf("FLASH_IRQHandler\n");
68 68 }
69 69
70 70 void RCC_IRQHandler(void)
71 71 {
72 72 printf("RCC_IRQHandler\n");
73 73 }
74 74
75 75 void EXTI0_IRQHandler(void)
76 76 {
77 77 printf("EXTI0_IRQHandler\n");
78 78 }
79 79
80 80 void EXTI1_IRQHandler(void)
81 81 {
82 82 printf("EXTI1_IRQHandler\n");
83 83 }
84 84
85 85 void EXTI2_IRQHandler(void)
86 86 {
87 87 printf("EXTI2_IRQHandler\n");
88 88 }
89 89
90 90 void EXTI3_IRQHandler(void)
91 91 {
92 92 printf("EXTI3_IRQHandler\n");
93 93 }
94 94
95 95 void EXTI4_IRQHandler(void)
96 96 {
97 97 printf("EXTI4_IRQHandler\n");
98 98 }
99 99
100 100 void DMA1_Stream0_IRQHandler(void)
101 101 {
102 102 printf("DMA1_Stream0_IRQHandler\n");
103 103 }
104 104
105 105 void DMA1_Stream1_IRQHandler(void)
106 106 {
107 107 printf("DMA1_Stream1_IRQHandler\n");
108 108 }
109 109
110 110 void DMA1_Stream2_IRQHandler(void)
111 111 {
112 112 printf("DMA1_Stream2_IRQHandler\n");
113 113 }
114 114
115 115 void DMA1_Stream3_IRQHandler(void)
116 116 {
117 117 printf("DMA1_Stream3_IRQHandler\n");
118 118 }
119 119
120 120 void DMA1_Stream4_IRQHandler(void)
121 121 {
122 122 printf("DMA1_Stream4_IRQHandler\n");
123 123 }
124 124
125 125 void DMA1_Stream5_IRQHandler(void)
126 126 {
127 127 printf("DMA1_Stream5_IRQHandler\n");
128 128 }
129 129
130 130 void DMA1_Stream6_IRQHandler(void)
131 131 {
132 132 printf("DMA1_Stream6_IRQHandler\n");
133 133 }
134 134
135 135 void ADC_IRQHandler(void)
136 136 {
137 137 printf("ADC_IRQHandler\n");
138 138 }
139 139
140 140 void CAN1_TX_IRQHandler(void)
141 141 {
142 142 printf("CAN1_TX_IRQHandler\n");
143 143 }
144 144
145 145 void CAN1_RX0_IRQHandler(void)
146 146 {
147 147 printf("CAN1_RX0_IRQHandler\n");
148 148 }
149 149
150 150 void CAN1_RX1_IRQHandler(void)
151 151 {
152 152 printf("CAN1_RX1_IRQHandler\n");
153 153 }
154 154
155 155 void CAN1_SCE_IRQHandler(void)
156 156 {
157 157 printf("CAN1_SCE_IRQHandler\n");
158 158 }
159 159
160 160 void EXTI9_5_IRQHandler(void)
161 161 {
162 162 printf("EXTI9_5_IRQHandler\n");
163 163 }
164 164
165 165 void TIM1_BRK_TIM9_IRQHandler(void)
166 166 {
167 167 printf("TIM1_BRK_TIM9_IRQHandler\n");
168 168 }
169 169
170 170 void TIM1_UP_TIM10_IRQHandler(void)
171 171 {
172 172 printf("TIM1_UP_TIM10_IRQHandler\n");
173 173 }
174 174
175 175 void TIM1_TRG_COM_TIM11_IRQHandlerIM11(void)
176 176 {
177 177 printf("TIM1_TRG_COM_TIM11_IRQHandlerIM11");
178 178 }
179 179
180 180 void TIM1_CC_IRQHandler(void)
181 181 {
182 182 printf("TIM1_CC_IRQHandler\n");
183 183 }
184 184
185 185 void TIM2_IRQHandler(void)
186 186 {
187 187 printf("TIM2_IRQHandler\n");
188 188 }
189 189
190 190 void TIM3_IRQHandler(void)
191 191 {
192 192 printf("TIM3_IRQHandler\n");
193 193 }
194 194
195 195 void TIM4_IRQHandler(void)
196 196 {
197 197 printf("TIM4_IRQHandler\n");
198 198 }
199 199
200 200 void I2C1_EV_IRQHandler(void)
201 201 {
202 202 printf("I2C1_EV_IRQHandler\n");
203 203 }
204 204
205 205 void I2C1_ER_IRQHandler(void)
206 206 {
207 207 printf("I2C1_ER_IRQHandler\n");
208 208 }
209 209
210 210 void I2C2_EV_IRQHandler(void)
211 211 {
212 212 printf("I2C2_EV_IRQHandler\n");
213 213 }
214 214
215 215 void I2C2_ER_IRQHandler(void)
216 216 {
217 217 printf("I2C2_ER_IRQHandler\n");
218 218 }
219 219
220 220 void SPI1_IRQHandler(void)
221 221 {
222 222 printf("SPI1_IRQHandler\n");
223 223 }
224 224
225 225 void SPI2_IRQHandler(void)
226 226 {
227 227 printf("SPI2_IRQHandler\n");
228 228 }
229 229
230 230 void USART1_IRQHandler(void)
231 231 {
232 232 printf("USART1_IRQHandler\n");
233 233 }
234 234
235 235 void USART2_IRQHandler(void)
236 236 {
237 237 printf("USART2_IRQHandler\n");
238 238 }
239 239
240 240 void USART3_IRQHandler(void)
241 241 {
242 242 printf("USART3_IRQHandler\n");
243 243 }
244 244
245 245 void EXTI15_10_IRQHandler(void)
246 246 {
247 247 printf("EXTI15_10_IRQHandler\n");
248 248 }
249 249
250 250 void RTC_Alarm_IRQHandler(void)
251 251 {
252 252 printf("RTC_Alarm_IRQHandler\n");
253 253 }
254 254
255 255 void OTG_FS_WKUP_IRQHandler(void)
256 256 {
257 257 printf("OTG_FS_WKUP_IRQHandler\n");
258 258 }
259 259
260 260 void TIM8_BRK_TIM12_IRQHandler(void)
261 261 {
262 262 printf("TIM8_BRK_TIM12_IRQHandler\n");
263 263 }
264 264
265 265 void TIM8_UP_TIM13_IRQHandler(void)
266 266 {
267 267 printf("TIM8_UP_TIM13_IRQHandler\n");
268 268 }
269 269
270 270 void TIM8_TRG_COM_TIM14_IRQHandlerIM14(void)
271 271 {
272 272 printf("TIM8_TRG_COM_TIM14_IRQHandlerIM14");
273 273 }
274 274
275 275 void TIM8_CC_IRQHandler(void)
276 276 {
277 277 printf("TIM8_CC_IRQHandler\n");
278 278 }
279 279
280 280 void DMA1_Stream7_IRQHandler(void)
281 281 {
282 282 printf("DMA1_Stream7_IRQHandler\n");
283 283 }
284 284
285 285 void FSMC_IRQHandler(void)
286 286 {
287 287 printf("FSMC_IRQHandler\n");
288 288 }
289 289
290 290 void SDIO_IRQHandler(void)
291 291 {
292 292 printf("SDIO_IRQHandler\n");
293 293 }
294 294
295 295 void TIM5_IRQHandler(void)
296 296 {
297 297 printf("TIM5_IRQHandler\n");
298 298 }
299 299
300 300 void SPI3_IRQHandler(void)
301 301 {
302 302 printf("SPI3_IRQHandler\n");
303 303 }
304 304
305 305 void UART4_IRQHandler(void)
306 306 {
307 307 printf("UART4_IRQHandler\n");
308 308 }
309 309
310 310 void UART5_IRQHandler(void)
311 311 {
312 312 printf("UART5_IRQHandler\n");
313 313 }
314 314
315 315 void TIM6_DAC_IRQHandler(void)
316 316 {
317 317 printf("TIM6_DAC_IRQHandler\n");
318 318 }
319 319
320 320 void TIM7_IRQHandler(void)
321 321 {
322 322 printf("TIM7_IRQHandler\n");
323 323 }
324 324
325 325 void DMA2_Stream0_IRQHandler(void)
326 326 {
327 327 printf("DMA2_Stream0_IRQHandler\n");
328 328 }
329 329
330 330 void DMA2_Stream1_IRQHandler(void)
331 331 {
332 332 printf("DMA2_Stream1_IRQHandler\n");
333 333 }
334 334
335 335 void DMA2_Stream2_IRQHandler(void)
336 336 {
337 337 printf("DMA2_Stream2_IRQHandler\n");
338 338 }
339 339
340 340 void DMA2_Stream3_IRQHandler(void)
341 341 {
342 342 printf("DMA2_Stream3_IRQHandler\n");
343 343 }
344 344
345 345 void DMA2_Stream4_IRQHandler(void)
346 346 {
347 347 printf("DMA2_Stream4_IRQHandler\n");
348 348 }
349 349
350 350 void ETH_IRQHandler(void)
351 351 {
352 352 printf("ETH_IRQHandler\n");
353 353 }
354 354
355 355 void ETH_WKUP_IRQHandler(void)
356 356 {
357 357 printf("ETH_WKUP_IRQHandler\n");
358 358 }
359 359
360 360 void CAN2_TX_IRQHandler(void)
361 361 {
362 362 printf("CAN2_TX_IRQHandler\n");
363 363 }
364 364
365 365 void CAN2_RX0_IRQHandler(void)
366 366 {
367 367 printf("CAN2_RX0_IRQHandler\n");
368 368 }
369 369
370 370 void CAN2_RX1_IRQHandler(void)
371 371 {
372 372 printf("CAN2_RX1_IRQHandler\n");
373 373 }
374 374
375 375 void CAN2_SCE_IRQHandler(void)
376 376 {
377 377 printf("CAN2_SCE_IRQHandler\n");
378 378 }
379 379
380 380 void OTG_FS_IRQHandler(void)
381 381 {
382 382 printf("OTG_FS_IRQHandler\n");
383 383 }
384 384
385 385 void DMA2_Stream5_IRQHandler(void)
386 386 {
387 387 printf("DMA2_Stream5_IRQHandler\n");
388 388 }
389 389
390 390 void DMA2_Stream6_IRQHandler(void)
391 391 {
392 392 printf("DMA2_Stream6_IRQHandler\n");
393 393 }
394 394
395 395 void DMA2_Stream7_IRQHandler(void)
396 396 {
397 397 printf("DMA2_Stream7_IRQHandler\n");
398 398 }
399 399
400 400 void USART6_IRQHandler(void)
401 401 {
402 402 printf("USART6_IRQHandler\n");
403 403 }
404 404
405 405 void I2C3_EV_IRQHandler(void)
406 406 {
407 407 printf("I2C3_EV_IRQHandler\n");
408 408 }
409 409
410 410 void I2C3_ER_IRQHandler(void)
411 411 {
412 412 printf("I2C3_ER_IRQHandler\n");
413 413 }
414 414
415 415 void OTG_HS_EP1_OUT_IRQHandler(void)
416 416 {
417 417 printf("OTG_HS_EP1_OUT_IRQHandler\n");
418 418 }
419 419
420 420 void OTG_HS_EP1_IN_IRQHandler(void)
421 421 {
422 422 printf("OTG_HS_EP1_IN_IRQHandler\n");
423 423 }
424 424
425 425 void OTG_HS_WKUP_IRQHandler(void)
426 426 {
427 427 printf("OTG_HS_WKUP_IRQHandler\n");
428 428 }
429 429
430 430 void OTG_HS_IRQHandler(void)
431 431 {
432 432 printf("OTG_HS_IRQHandler\n");
433 433 }
434 434
435 435 void DCMI_IRQHandler(void)
436 436 {
437 437 printf("DCMI_IRQHandler\n");
438 438 }
439 439
440 440 void CRYP_IRQHandler(void)
441 441 {
442 442 printf("CRYP_IRQHandler\n");
443 443 }
444 444
445 445 void HASH_RNG_IRQHandler(void)
446 446 {
447 447 printf("HASH_RNG_IRQHandler\n");
448 448 }
449 449
450 450 void FPU_IRQHandler(void)
451 451 {
452 452 printf("FPU_IRQHandler\n");
453 453 }
454 454
@@ -1,10 +1,13
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3
4 4 SOURCES += gpio.c
5 5
6 6 UCMODEL=stm32f4
7 7
8 HEADERS += \
9 ../../../include/PERIPHERALS/gpio.h
8 10
9 11
10 12
13
@@ -1,10 +1,13
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3
4 4 SOURCES += i2c.c
5 5
6 6
7 7 UCMODEL=stm32f4
8 8
9 HEADERS += \
10 ../../../include/PERIPHERALS/i2c.h
9 11
10 12
13
@@ -1,6 +1,9
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3
4 4 SOURCES += sdcard-sdio.c
5 5
6 6 UCMODEL=stm32f4
7
8 HEADERS += \
9 ../../../include/FLASH/sdcard-sdio.h
@@ -1,8 +1,11
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3
4 4 SOURCES += spi.c
5 5
6 6
7 7 UCMODEL=stm32f4
8 8
9 HEADERS += \
10 ../../../include/PERIPHERALS/spi.h
11
@@ -1,6 +1,10
1 1 TEMPLATE = lib
2 2 CONFIG += libuc2lib
3 3
4 4 SOURCES += uart.c
5 5
6 6 UCMODEL=stm32f4
7
8 HEADERS += \
9 ../../../include/PERIPHERALS/uart.h
10
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 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
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now