Skip to content

Commit 43aaee0

Browse files
Merge branch 'master' into release
2 parents ce3c3a3 + 352314e commit 43aaee0

File tree

107 files changed

+7862
-3846
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+7862
-3846
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
*~
2+
*.o
3+
*.a
4+
html
5+
nbproject
6+
.rlhistory
7+
*.hex

README.md

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ for interact with other programs. communicating over a serial line
77
(likely in USB disguise), TCP-, or UDP sockets, acting as server
88
(accepting incoming requests) or client (initiating connections).
99

10-
It implements some of the functionallity of [Chris Young's
10+
It implements some of the functionality of [Chris Young's
1111
IRLib](http://tech.cyborg5.com/irlib/,
1212
https://github.com/cyborg5/IRLib), which is a major
1313
rewrite of a previous library called IRremote, published by
@@ -21,11 +21,12 @@ Michael's code is included, in somewhat modified form, in the files
2121
IrWidget.[cpp,h] and IrWidgetAggregating.[cpp,h].
2222

2323
The project contains a library, contained in the directory GirsLib,
24-
and two applications: Girs and Listener. The directory GirsLib should
24+
and a few applications, presently Girs, GirsLite, Girs4Lirc, Listener,
25+
and others. The directory GirsLib should
2526
be copied to
2627
the library area, typically <b>$HOME/Arduino/libraries/GirsLib</b>, while the
2728
application directories can be processed by the Arduino IDE
28-
directly. The directory Girr contains the AGirs application
29+
directly. The directory Girs contains the AGirs application
2930
interactive program. Listener is a uni-directional program that just
3031
emits decodes on the serial interface. It is intended to be used in
3132
conjunction with my Java program
@@ -34,7 +35,7 @@ possibly be discontinued in the future.)
3435

3536
## Configuration
3637
It is a modular program that is heavily based on CPP symbols, defined
37-
in the configuration file <code>config.h</code>. This determinines the capacities of the
38+
in the configuration file <code>config.h</code>. This determines the capacities of the
3839
compiled program, and adapts the configuration to the underlying
3940
hardware. The options are (somewhat) documented in <code>Girs/config.h</code>.
4041
Not all combination are sensible or implemented. Some of the non-sensible
@@ -43,7 +44,7 @@ combinations will be detected and will generate a compilation error.
4344
## Code organization
4445
There is a "library" (in the Arduino sense), <code>src/GirsLib</code>, which should be copied/moved/linked to the Arduino library area,
4546
typically <code>~/Arduino/libraries</code> or <code>C:\Arduino\libraries</code>.
46-
The other subdirectories of <code>src</code> contain different sketches that can
47+
The other sub-directories of <code>src</code> contain different sketches that can
4748
be compiled and run on the Arduino.
4849

4950
Due to the quirks of the preprocessor of the Arduino IDE, the following rule is used:
@@ -58,9 +59,9 @@ header file. It describes the attach sensor(s) and the pins
5859
they are connected to. To allow soldering sensors directly to the
5960
holes in some boards, the program supports defining e.g. SENSOR_GND
6061
and SENSOR_VSS, which will make the program define these pins as
61-
digital outputs, being fed by constant 0 and 5 volts respectivelly.
62+
digital outputs, being fed by constant 0 and 5 volts respectively.
6263

63-
Note that the sending pin and the capure pin
64+
Note that the sending pin and the capture pin
6465
(as opposed to the receive pin) are not configurable, but has to
6566
follow the following table:
6667

@@ -82,14 +83,31 @@ to the GPIO pin defined as NON_MOD_PIN. Then transmitted signals
8283
having frequency 0 will be directed to that device. (Later versions
8384
may use different syntax and semantic.)
8485

86+
## Testing
87+
The flashed unit can be tested with a standard terminal program, like the
88+
serial monitor of the Arduino IDE. For this, set the baud rate to 115200, and
89+
the line ending to carriage return. It is now possible to communicate
90+
with the unit using the [commands of
91+
Girs](http://www.harctoolbox.org/Girs.html). Just type the command to
92+
the program, and the unit will respond.
93+
Exactly which commands are
94+
available depends on the configuration. In all cases, the
95+
<code>version</code> and the <code>modules</code> commands are
96+
available. If <code>receive</code> is implemented, just type
97+
"<code>r</code>" (without the
98+
quotes), followed by return, and fire a suitable IR signal at the
99+
receiver. The raw capture will be output to the terminal program. Using
100+
the clipboard, it can be pasted to IrScrutinizer, and analyzed. Of course, also
101+
the other commands can be tested in this way.
102+
85103
## Dependencies
86104

87-
* Ethernet (if enabling the ETHERNET configure option). Contanied in the Arduino IDE.
88-
* SPI (if enabling the ETHERNET or LCD_I2C configure option). Contanied in the Arduino IDE.
89-
* Wire (if enabling the LCD_I2C configure option). Contanied in the Arduino IDE.
90-
* LiquidCrystal (if enabling the LCD_4BIT option, i.e. connecting an
91-
LCD display directly). Contanied in the Arduino IDE.
92-
* [Arduino-LiquidCrystal-I2C](https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library.git)
105+
* [Infrared4Arduino](https://github.com/bengtmartensson/Infrared4Arduino) by myself. (In earlier versions
106+
of this project, this was integrated.)
107+
* Ethernet (if enabling the ETHERNET configure option). Contained in the Arduino IDE.
108+
* SPI (if enabling the ETHERNET or LCD_I2C configure option). Contained in the Arduino IDE.
109+
* Wire (if enabling the LCD_I2C configure option). Contained in the Arduino IDE.
110+
* [Arduino-LiquidCrystal-I2C](https://github.com/marcoschwartz/LiquidCrystal_I2C) version 1.1.2.
93111
Needed if defining LCD_I2C, i.e. connecting an LCD display with an I2C interface card.
94112

95113
## Questions and answers
@@ -99,32 +117,46 @@ Needed if defining LCD_I2C, i.e. connecting an LCD display with an I2C interface
99117
and ["capture"](http://www.harctoolbox.org/Glossary.html#Capturing)?
100118

101119
Please follow the links given. Differently put, "receive" uses a
102-
demodulating receiver, "capure" a non-demodulating decoder. Note that
120+
demodulating receiver, "capture" a non-demodulating decoder. Note that
103121
this is not universally accepted terminology (yet!).
104122

105-
* Are ENC28J60 Ethernet modules supported?
123+
* What Ethernet modules are supported?
106124

107-
No, not presently, just cards based on the W5100 chip, like the
125+
Only cards based on the W5100 chip (and compatible), like the
108126
[official
109-
shield](https://www.arduino.cc/en/Main/ArduinoEthernetShield). (Note
110-
that there are both cleap clones of the orginal available, as well as
111-
smallish W5100-based cards, for prices just slightly higher than a
112-
ENC28J60 module. The W5100 is the better chip anyhow.) I did some test
113-
with the [Arduino uip
114-
library](https://github.com/ntruchsess/arduino_uip), but it was
115-
just too memory hungry on an AtMega328. Contributed code is welcome.
116-
117-
* What about "GirsLite".
118-
119-
"GirsLite" is a precessor to the present program. It is a minimalistic
120-
(thereby the name) Girs server
127+
shield](https://www.arduino.cc/en/Main/ArduinoEthernetShield). There are both cheap clones of the original available, as well as
128+
smallish W5100-based cards.
129+
130+
* What about "GirsLite"?
131+
132+
"GirsLite" was a predecessor to the present program. As indicated by the
133+
name, it is a minimalist Girs server
121134
for the Arduino, that implements only the
122135
[capture](http://www.harctoolbox.org/Girs.html#Capture) and the
123136
[transmit](http://www.harctoolbox.org/Girs.html#Transmit) modules,
124137
without all options. This was meant to be used with
125138
[IrScrutinizer](http://www.harctoolbox.org/IrScrutinizer.html)
126-
versions 1.1.*. It is essentially equivalent to the present program
127-
with only the CPP symbols TRANSMIT and CAPTURE defined.
139+
versions 1.1.*. Presently, it is not an independent program, it is just AGirs
140+
with certain options enabled, namely
141+
the CPP symbols TRANSMIT, CAPTURE, LED, and (optionally) NON_MOD
142+
defined. Alternatively, if RECEIVE is defined, but not CAPTURE, the
143+
program mimics the capture command with a demodulating sensor, for
144+
usage with IrScrutinizer without a non-demodulating sensor.
145+
146+
* What about Girs4Lirc?
147+
148+
This is a version of Girs, "optimized" for Lirc, using the Lirc
149+
<code>girs</code> driver by yours truly. At the time of this writing,
150+
it is not yet found in the
151+
released Lirc, but in the "master" branch in its Sourceforge
152+
repository, which can be checkout with the command
153+
154+
<pre>git clone git://git.code.sf.net/p/lirc/git lirc-git</pre>
155+
156+
Like GirsLite, this is not an independent program, but corresponds to a version of AGirs supporting TRANSMIT,
157+
NON_MOD (optionally), RECEIVE, LED, LCD, DECODE (only to the LCD), TRANSMITTERS
158+
(only a dummy implementation). Documentation is found with the Lirc
159+
driver, in the file <code>girs_driver.html</code>.
128160

129161
## License
130162
The entire work is licensed under the GPL3 license. Chris' as well as Ken's

src/Girs/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Girs
2+
Girs.exe

0 commit comments

Comments
 (0)