initial commit
[ETG_Helmet] / SOFTWARE / UTILS / fast-gpio / include / main.h
1 #ifndef _FAST_GPIO_MAIN_H_
2 #define _FAST_GPIO_MAIN_H_
3
4 #include <stdlib.h>
5 #include <cstdio>
6 #include <cstring>
7
8 #include <iostream>
9 #include <fstream>
10
11 #include <fastgpio.h>
12 #include <fastpwm.h>
13
14 #include <fastgpioomega.h>
15 #include <fastgpioomega2.h>
16
17 #define FASTGPIO_VERBOSITY_QUIET                (0)
18 #define FASTGPIO_VERBOSITY_NORMAL               (1)
19 #define FASTGPIO_VERBOSITY_ALL                  (2)
20 #define FASTGPIO_VERBOSITY_JSON                 (3)
21
22 #define FASTGPIO_DEFAULT_VERBOSITY              (FASTGPIO_VERBOSITY_NORMAL)
23 #define FASTGPIO_DEFAULT_DEBUG                  (0)
24
25 #define FASTGPIO_VERBOSE        0
26 #define FASTGPIO_DEBUG          0
27
28 #define PID_FILE        "/tmp/pin%d_pwm_pid"
29
30 #define FASTGPIO_STDOUT_STRING                  "> %s GPIO%d: %s\n"
31 #define FASTGPIO_JSON_STRING                    "{\"cmd\":\"%s\", \"pin\":%d, \"val\":\"%s\"}\n"
32
33 #define FASTGPIO_CMD_STRING_SET                 "Set"
34 #define FASTGPIO_CMD_STRING_READ                "Read"
35 #define FASTGPIO_CMD_STRING_SET_DIR             "Set direction"
36 #define FASTGPIO_CMD_STRING_GET_DIR             "Get direction"
37 #define FASTGPIO_CMD_STRING_PWM                 "Set PWM" 
38 #define FASTGPIO_CMD_STRING_PULSES      "Pulses"
39
40
41
42 // type definitions
43 typedef enum e_GpioCmd {
44         GPIO_CMD_SET = 0,
45         GPIO_CMD_READ,
46         GPIO_CMD_READ_MASK,
47         GPIO_CMD_READFULL,
48         GPIO_CMD_SET_DIRECTION,
49         GPIO_CMD_GET_DIRECTION,
50         GPIO_CMD_PWM,
51         GPIO_CMD_PULSES,
52         NUM_GPIO_CMD
53 } gpioCmd;
54
55 struct gpioSetup {
56         gpioCmd cmd; 
57         char*   cmdString;
58
59         int     pinNumber;
60         int     pinValue;
61         int     pinDir;         // 0 - input, 1 - output
62         char*   shellCommand;
63         unsigned long int       bitMask;
64
65         // pwm options
66         int     bPwm;
67         int     pwmFreq;
68         int     pwmDuty;
69
70         // pulses options
71         char*   pathPulsesFile;
72         int     repeats;
73
74         // general options
75         int     verbose;
76         int     debug;
77
78         // my additional 
79         unsigned int     cycles;
80 };
81
82
83 // function definitions
84 void    initGpioSetup           (gpioSetup* obj);
85
86 void    usage                           (const char* progName);
87 int     parseArguments          (const char* progName, int argc, char* argv[], gpioSetup *setup);
88
89 int     gpioRun                         (gpioSetup* setup);
90 int     pwmRun                          (gpioSetup* setup);
91
92 int     noteChildPid            (int pinNum, int pid);
93 int     killOldProcess          (int pinNum);
94 int     checkOldProcess         (gpioSetup *setup);
95
96 int pulseGpio(FastGpio *gpioObj,int pinNum, char* pathToFile, int repeats);
97
98
99
100 #endif  // _FAST_GPIO_MAIN_H_
Contact me: dev (at) shalnoff (dot) com
PGP fingerprint: A6B8 3B23 6013 F18A 0C71 198B 83D8 C64D 917A 5717