Code Monkey home page Code Monkey logo

agirs's People

Contributors

adrcunha avatar bengtmartensson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

agirs's Issues

Arduino Error Compiling

The Girs.Lite.cpp in the sketch is blank which leads to the following error message:

Arduino: 1.6.6 (Mac OS X), Board: "Arduino/Genuino Uno"
stat /Users/janvikalra/Documents/Arduino/libraries/GirsLite/GirsLite.cpp: no such file or directory
Error compiling.

I tried the same sketch on a windows and got the same error message.

Support ENC28J60 Ethernet modules

See README.md. Of limited usefulness, since there are cheap W5100 modules available (which, in contrast to ENC28J60, are compatible with the Arduino Ethernet library), just slightly more expensive.

Better handling of signals longer than the buffer

Presently, we just deliver what is in the buffer when it got full.

  • Possibly truncate at last "large" gap?
  • Possibly indicate problem by flashing LEDs?
  • Possibly some indication that truncation took place?

Integrate DecodeIR

Arduino-Decodeir to be integrated. Only for boards >= Mega2560. Preferably support display on LCD display. ~~~Also the Listener should be supported.~~~


Have a CPP symbol `DECODEIR`; if defined, replace the built-in decoder `MultiDecoder` by a call to DecodeIR.

Reduce time spent in selftest blink

Currently, 2000ms is spent just showing which LEDs are working, preventing the program to take inputs. This is really annoying in particular for Lirc. Reduce to, say, 200ms.

Integrate ABeacon

The beacon should be integrated, of course only in the TCP/UDP version. There is a routine that should be called "every now and then" (no less than 60 seconds (say) apart), but a precise timing is not needed, so preferably a timer should not be sacrificed.

Reorganize & submit to Arduino library manager

The current project organization is somewhat peculiar. This is only partially to blame on the Arduino idiosyncrasies. Most severely, it cannot be integrated into the Arduino library manager.

The project should be reorganized, and eventually submitted to the Arduino library manager. I do not know a possibility to avoid editing a configuration file within the library, so we will have to live with that. The "applications" should be turned into "examples", if possible.

There is a branch reorganization that contains a good start. Remains essentially the SIL testing parts, checking the applications/examples, and updating documentation.

IR translator

First, just make a simple demo program that understands a few parametric input signals, and sends "translated" signals. Everything single-tasking.

This is essentially a small variation of the listener, see also the Opponator. Should (optionally) support debug outputs on Serial. Should support LEDs and LCD in the same way as the Listener.

Should be implemented as an "example", parallel to Girs.[ino|cpp].

Support IPv6

Since the official shield (based on W5100/W5500), as well as the official libraries do not support IPv6, a substantial update of the official libraries is required.

More of a long-time goal; not immediately do-able.

message from Rafi / IRremote repo Down!

Hi. (From rafi, relayed as requested)

I just wanted to inform you that my account has temporarily been flagged on github. Probably got stuck in some random spam filter bot.

I submitted a ticket to GitHub but it may take a while to fix.

In the meantime the repo is inaccessible, any chance you could somehow post an issue on one of bengtmartenssons's repos just to let him know?

Your email is the only one I have from the community.

Thanks,
Rafi Khan

Better LED control

  1. It should be possible, for the user during run time, to select that a particular LED should go on (or off?) for particular events, like sending an IR signal, or waiting for a command or a signal reception. These should be governed by parameters, settable with the parameter command.
  2. More fine-grained turn-offs of the LEDs. Presently all are turned off when a timeout is detected.

Code reorganization

Split current GirsLib into GirsIrLib (which basically is "compatible" with IRLib and IrRemote), and GirsMiscLib (rest of the stuff like LED and LCD support, tokenizer,...).

Windows version of the flasher script

Windows version of the flasher script GirsLite-$VERSION-nano-flasher.sh as bat file. Should use avrdude, per default C:\Program Files\Arduino\hardware\tools\avr\bin\avrdude.exe with avrdude.conf as C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf. Should support double clicking, a console pops up and asks for COM-port.

Support capturing of 455kHz IR signals

This has a very low usability/effort ratio. Probably cannot be done with 16MHz hardware. Neither can our favorite sensors like TSMP58000 be used, since they end at 60kHz.

Port to IrToy

It "should" be possible to port this project to the IrToy, preferably using the IrToy boot loader. It has a PIC 18F2550 processor.

The official v22 firmware is found here. The v23 sources appears not to be available.

Should probably be a top-level project on its own.

Implement GlobalCache emulation

No need for a complete implementation, just the main, IR-related commands of GC-100/Flex.

Commands:

  • getdevices (just return something trivial that later the sendir command accepts, like a Flex with one transmitter)
  • getversion
  • get_NET (?)
  • blink(?)
  • sendir

Everything single threaded: accept command, process, print output. (stopir is thus not to be implemented.) Only one connection at a time. Should return compatible error codes.

Can use LEDs to indicate state (listening, sending,...).

Probably should incorporate the Beacon.

In the Arduino package, can be an "Example" parallel with Girs.[ino|cpp].

Write as much as possible stream-based, but no need (at least initially) to support anything but TCP-server mode (just like the GC devices).

First version only support one sender, no receivers/captures. Several sender, learning (get_IRL) can be implemented in a second phase.

Key presses are reported late by lirc

I am using GirsLite with lircd (versions 0.9.4d and 0.10.0) and I see that button presses get reported late. Although this can be solved via a configuration change I am reporting it to save time from others.

By default and for most configured remotes, lircd has a large receive timeout. This timeout is called LIRC_SET_REC_TIMEOUT by lircd and receiveending in girs. In my case it was over 100ms as the gap for my remote in the lircd configuration was unnecessarily large (as is in most available conf in the lirc site). Also by default the chosen receive window is 172ms because lirc comes with the devinput remote that has a large gap.

This is a problem because for some remotes many codes can fit in the receive timeout. The first problem is that lircd may drop times because its buffer will quickly get full (with the message "girs: readline buffer full:").

Even if we increase the buffer (by raising LONG_LINE_SIZE in the girs driver) we still have a second problem which is caused by the fact that lircd is designed to decode a single code with each receive command to the driver. If we press two buttons in say 172ms the following may happen:

  1. lircd unblocks in mywaitfordata in the main loop
  2. girs receive gets called, and eventually girs readdata which reads from girslite one line with the times for both buttons in the buffer
  3. the code is decoded and lircd reports the first button press
  4. the main lircd loop blocks in mywaitfordata

The second button press is not reported. When something unblocks curl_poll in mywaitfordata (like a third button press) we get the second button press reported with a significant delay.

Note that timing is important. It is possible that the Arduino is still transmitting the second code when the decoding of the first ends, in which case mywaitfordata will not block. Of course the problem may happen with more button presses.

We can avoid this problem by reducing the gap for all the remotes in the lircd configuration. This was the gap line for my remote:

begin remote
  name  Samsung_BN59-00603A
  bits           16
  ...
  gap          *107567*

An alternative workaround is to modify girslite to not update receiveending from lircd and set a low DEFAULT_RECEIVE_ENDINGTIMEOUT value (for me 30ms was enough).

If a smaller receive timeout is not possible (for example if you have two remotes, one with long and one with short codes) I know no good solution.

Wrong #ifndef in file girs_pins_nano_shield.h

Drop file from repos or change
#ifndef GIRS_PINS_NANO_H
#define GIRS_PINS_NANO_H
into
#ifndef GIRS_PINS_NANO_SHIELD_H
#define GIRS_PINS_NANO_SHIELD_H

but values will still depend on include order.

GirsLite using Arduino Pro Micro

Thank you for producing a girs_pins_micro.h file to support the Pro Micro. I take it from the following section:

#ifdef LED
#define SIGNAL_LED_1 2
//#define SIGNAL_LED_1_GND 3
#define SIGNAL_LED_4 A0
#define SIGNAL_LED_4_GND 15
#define SIGNAL_LED_3 A2
#define SIGNAL_LED_3_GND A1
#define SIGNAL_LED_2 A3
//#define SIGNAL_LED_1_GND 8
#endif

that I would wire up the LEDs as follows:

LED colour cathode anode
LED 2 Red A3 ground
LED 3 Yellow A2 A1
LED 4 Green A0 pin 15
  1. Is the LED wiring immediately above correct?
  2. What about the fact the Pro Micro has no built in LED? What does #define SIGNAL_LED_1 2 end up doing for Pro Micro?
  3. To direct GirsLite to use the new Pro Micro pin definition file, I think I need to add #define ARDUINO_AVR_MICRO to GirsLite.ino, correct?

I can understand that you might not want to get too involved in the particulars of the Pro Micro since you use and support the Nano yourself, however, at least inform about the best approach for directing the compiler to use a specific Arduino version - there are no comments in the source files that I can see on where to put the #define ARDUINO_AVR_XXX directive.

Arduino-ifi code

Using the basic anatomy of an Arduino sketch

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

will help this to get widespread adoption in the Arduino community, as will using the basic anatomy of an Arduino library.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.