coding dojo - the learning remote control

17
Coding Dojo The learning remote control /* a C++ exercise */ @AlinPandichi

Upload: alin-pandichi

Post on 28-Jan-2018

49 views

Category:

Technology


3 download

TRANSCRIPT

Coding Dojo

The learning remote control/* a C++ exercise */

@AlinPandichi

Coding Dojo Mindset●We are here to learn●Safe place outside of work●Need to slow down●Focus on doing it right●Non­competitive, collaborative, fun environment

Expectations?

Agenda

●19:00 ­ 19:10 Introduction  ●19:10 ­ 19:30 Intro●19:30 ­ 20:00 Practice Session Part 1 ●20:00 ­ 20:10 Break  ●20:10 ­ 20:45 Practice Session Part 2 ●20:45 ­ 21:00 Retrospective

The learning remote control

● You are writing the firmware for a learning remote control.

● You put it into a 'listening' state...● ...to capture the signal from another IR remote control

● Your firmware must find a repeating pattern of pulses

Digital signal processing

● https://www.allaboutcircuits.com/uploads/articles/An­Introduction­to­Digital­Signal­Processing­(1).png

Other requirements● on_start_learning_mode to simulate the user initiating a training operation

● on_signal_change called repeatedly to simulate a continually repeating input signal

● Return a list of pulses representing the detected pattern (or none)

Other requirements● A pulse is defined as a HIGH/LOW pair made out of an integer 2­tuple. 

● Each integer pair is the time in nanoseconds the signal was high for and then the time in nanoseconds the signal was low for. For example:

# high for 52 nanos, low for 4500 nanospulse = (52, 4500)

In ASCII art...

| (1) (2) (3)(4)(5) (6) (7)(8) <-- | ..................... .... ..... ... <--- HIGH| | | | | | | | ||.....| |...| |..| |.....| | <--- LOW| <- nanos_elapsed ->+-------------------------------------------------------------time_nanos ->

It should look something like this

def on_signal_change(is_high, nanos_elapse): # your code ... # then return a pattern return [(50, 4500), (3423, 333), (212,44)]

The following will hold true● The first invocation of the on_signal_change method 

will be the start of the pattern. Note that nanos_elapsed will be 0 for this first call.

● The first invocation of the on_signal_change method will always be for a LOW to HIGH transition (rising edge, is_high is True).

● The pattern will be made up of at least 1 HIGH/LOW pulse.

● The pattern will be made up of less than 26 HIGH/LOW pulses.

● The pattern will be made up of ideal pulses (i.e. no jitter, fuzzyness, or drift).

Practice session

● One laptop with a functional dev. env. is connected to a projector

● Two developers pair program on the laptop. The others are watching the code changes.

● Every 7 minutes, one developer leaves the laptop and the next one from the room takes his place. 

Practice time!

Retrospective

●What surprised you?

●What happened as expected?

●What do you plan to use at work?

Kata stolen from:

https://www.codewars.com/kata/learning-remote-control/

Learn more!https://cppeurope.com/

Thank you!@AlinPandichi