Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RF24
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
RF24
Commits
dec61af8
Commit
dec61af8
authored
Jan 15, 2012
by
maniacbug
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pingpair_blocking test now uses expect and runs on linux
parent
c2e95646
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
174 additions
and
147 deletions
+174
-147
tests/pingpair_blocking/Jamfile
tests/pingpair_blocking/Jamfile
+150
-137
tests/pingpair_blocking/pingpair_blocking.pde
tests/pingpair_blocking/pingpair_blocking.pde
+3
-0
tests/pingpair_blocking/printf.h
tests/pingpair_blocking/printf.h
+6
-2
tests/pingpair_blocking/runtest.py
tests/pingpair_blocking/runtest.py
+2
-2
tests/pingpair_blocking/runtests.sh
tests/pingpair_blocking/runtests.sh
+2
-6
tests/pingpair_blocking/test.ex
tests/pingpair_blocking/test.ex
+11
-0
No files found.
tests/pingpair_blocking/Jamfile
View file @
dec61af8
PROJECT_NAME = $(PWD:B) ;
# (1) Project Information
PROJECT_DIR = . ;
PROJECT_LIBS = SPI RF24 ;
PROJECT_LIBS = SPI RF24 ;
PROJECT_DIRS = $(PWD) ;
# (2) Board Information
UPLOAD_PROTOCOL ?= arduino ;
UPLOAD_SPEED ?= 57600 ;
MCU ?= atmega328p ;
F_CPU ?= 16000000 ;
CORE ?= arduino ;
VARIANT ?= standard ;
ARDUINO_VERSION ?= 100 ;
# (3) USB Ports
OUT_DIR = ojam ;
PORTS = p4 p6 p9 u0 u1 u2 ;
F_CPU = 16000000 ;
PORT_p6 = /dev/tty.usbserial-A600eHIs ;
MCU = atmega328p ;
PORT_p4 = /dev/tty.usbserial-A40081RP ;
PORTS = /dev/tty.usbserial-A600eHIs /dev/tty.usbserial-A40081RP /dev/tty.usbserial-A9007LmI ;
PORT_p9 = /dev/tty.usbserial-A9007LmI ;
PORT_u0 = /dev/ttyUSB0 ;
PORT_u1 = /dev/ttyUSB1 ;
PORT_u2 = /dev/ttyUSB2 ;
UPLOAD_RATE = 57600 ;
# (4) Location of AVR tools
AVRDUDE_PROTOCOL = stk500v1 ;
#
COM = 33 ;
# This configuration assumes using avr-tools that were obtained separate from the Arduino
# distribution.
# Host-specific overrides for locations
if $(OS) = MACOSX
if $(OS) = MACOSX
{
{
ARDUINO_VERSION = 22
;
AVR_BIN ?= /usr/local/avrtools/bin
;
OLD_DIR = /opt/arduino-0021
;
AVR_ETC = /usr/local/avrtools/etc
;
AVR_TOOLS_PATH = $(OLD_DIR)/hardware/tools/avr/bin ;
AVR_INCLUDE = /usr/local/avrtools/include ;
AVRDUDECONFIG_PATH = $(OLD_DIR)/hardware/tools/avr/etc ;
}
ARDUINO_DIR = /opt/Arduino ;
else
ARDUINO_AVR = /usr/lib/avr/include ;
{
}
AVR_BIN ?= /usr/bin ;
AVR_INCLUDE = /usr/lib/avr/include ;
# Where is everything?
AVR_ETC = /etc ;
ARDUINO_VERSION ?= 22 ;
}
AVR_TOOLS_PATH ?= /usr/bin ;
ARDUINO_DIR ?= /opt/arduino-00$(ARDUINO_VERSION) ;
# (5) Directories where Arduino core and libraries are located
ARDUINO_AVR ?= $(ARDUINO_DIR)/hardware/tools/avr/avr/include/avr ;
A
VRDUDECONFIG_PATH ?= $(ARDUINO_DIR)/hardware/tools
;
A
RDUINO_DIR ?= /opt/Arduino
;
ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/
arduino
;
ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/
$(CORE) $(ARDUINO_DIR)/hardware/arduino/variants/$(VARIANT)
;
ARDUINO_LIB = $(ARDUINO_DIR)/libraries ;
ARDUINO_LIB = $(ARDUINO_DIR)/libraries ;
SKETCH_LIB = $(HOME)/Source/Arduino/libraries ;
SKETCH_LIB = $(HOME)/Source/Arduino/libraries ;
AVR_CC = $(AVR_TOOLS_PATH)/avr-gcc ;
AVR_CXX = $(AVR_TOOLS_PATH)/avr-g++ ;
AVR_LD = $(AVR_TOOLS_PATH)/avr-gcc ;
AVR_OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy ;
AVRDUDE = $(AVR_TOOLS_PATH)/avrdude ;
DEFINES = F_CPU=$(F_CPU)L ARDUINO=$(ARDUINO_VERSION) VERSION_H ;
CTUNING = -ffunction-sections -fdata-sections ;
CXXTUNING = -fno-exceptions -fno-strict-aliasing ;
CFLAGS = -Os -Werror -Wall -Wextra -mmcu=$(MCU) $(CTUNING) ;
CXXFLAGS = $(CFLAGS) $(CXXTUNING) ;
LDFLAGS = -Os -lm -Wl,--gc-sections -mmcu=atmega328p ;
# Search everywhere for headers
#
HDRS = $(PROJECT_DIR) $(ARDUINO_AVR) $(ARDUINO_CORE) [ GLOB $(ARDUINO_LIB) $(SKETCH_LIB) : [^.]* ] ;
# --------------------------------------------------
# Below this line usually never needs to be modified
#
# Grab everything from the core directory
# Tool locations
CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ;
# Grab everything from libraries. To avoid this "grab everything" behaviour, you
CC = $(AVR_BIN)/avr-gcc ;
# can specify specific modules to pick up in PROJECT_MODULES
C++ = $(AVR_BIN)/avr-g++ ;
LIB_MODULES = [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp ] ;
LINK = $(AVR_BIN)/avr-gcc ;
AR = $(AVR_BIN)/avr-ar rcs ;
RANLIB = ;
OBJCOPY = $(AVR_BIN)/avr-objcopy ;
AVRDUDE ?= $(AVR_BIN)/avrdude ;
# In addition to explicitly-specified program modules, pick up anything from the current
# Flags
# dir.
PROJECT_MODULES += [ GLOB $(PROJECT_DIR) : *.c *.cpp *.pde ] ;
# Shortcut for the out files
DEFINES += F_CPU=$(F_CPU)L ARDUINO=$(ARDUINO_VERSION) VERSION_H ;
OUT = $(OUT_DIR)/$(PROJECT_NAME) ;
OPTIM = -Os ;
CCFLAGS = -Wall -Wextra -Wno-strict-aliasing -mmcu=$(MCU) -ffunction-sections -fdata-sections ;
C++FLAGS = $(CCFLAGS) -fno-exceptions -fno-strict-aliasing ;
LINKFLAGS = $(OPTIM) -lm -Wl,--gc-sections -mmcu=$(MCU) ;
AVRDUDEFLAGS = -V -F -D -C $(AVR_ETC)/avrdude.conf -p $(MCU) -c $(UPLOAD_PROTOCOL) -b $(UPLOAD_SPEED) ;
# AvrDude setup
# Search everywhere for headers
AVRDUDE_FLAGS = -V -F -D -C $(AVRDUDECONFIG_PATH)/avrdude.conf -p $(MCU) -c $(AVRDUDE_PROTOCOL) -b $(UPLOAD_RATE) ;
HDRS = $(PROJECT_DIRS) $(AVR_INCLUDE) $(ARDUINO_CORE) $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) ;
# Output locations
LOCATE_TARGET = $(F_CPU) ;
LOCATE_SOURCE = $(F_CPU) ;
#
# Custom rules
#
rule GitVersion
rule GitVersion
{
{
...
@@ -79,128 +100,120 @@ actions GitVersion
...
@@ -79,128 +100,120 @@ actions GitVersion
GitVersion version.h ;
GitVersion version.h ;
rule AvrCc
rule Pde
{
Depends $(<) : $(>) ;
Depends $(<) : $(<:D) ;
Clean clean : $(<) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
}
actions AvrCc
{
$(AVR_CC) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CFLAGS) $(>)
}
rule AvrC++
{
{
Depends $(<) : $(>) ;
Depends $(<) : $(>) ;
Depends $(<) : $(<:D
) ;
MakeLocate $(<) : $(LOCATE_SOURCE
) ;
Clean clean : $(<) ;
Clean clean : $(<) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
}
}
actions AvrC++
if ( $(ARDUINO_VERSION) < 100 )
{
{
$(AVR_CXX) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CXXFLAGS) $(>)
ARDUINO_H = WProgram.h ;
}
}
else
rule Pde
{
{
Depends $(<) : $(>) ;
ARDUINO_H = Arduino.h ;
Depends $(<) : $(<:D) ;
Clean clean : $(<) ;
}
}
actions Pde
actions Pde
{
{
echo "#include <WProgram.h
>" > $(<)
echo "#include <$(ARDUINO_H)
>" > $(<)
echo "#line 1 \"$(>)\"" >> $(<)
echo "#line 1 \"$(>)\"" >> $(<)
cat $(>) >> $(<)
cat $(>) >> $(<)
}
}
rule
Avr
Pde
rule
C++
Pde
{
{
local _CPP = $(OUT_DIR)/$(_I
:B).cpp ;
local _CPP = $(>
:B).cpp ;
Pde $(_CPP) : $(>) ;
Pde $(_CPP) : $(>) ;
Avr
C++ $(<) : $(_CPP) ;
C++ $(<) : $(_CPP) ;
}
}
rule
Av
rObject
rule
Use
rObject
{
{
switch $(>:S)
switch $(>:S)
{
{
case .c : AvrCc $(<) : $(>) ;
case .ino : C++Pde $(<) : $(>) ;
case .cpp : AvrC++ $(<) : $(>) ;
case .pde : C++Pde $(<) : $(>) ;
case .pde : AvrPde $(<) : $(>) ;
}
}
}
}
rule
Avr
Objects
rule Objects
{
{
for _I in $(<)
local _i ;
for _i in [ FGristFiles $(<) ]
{
{
AvrObject $(OUT_DIR)/$(_I:B).o : $(_I) ;
local _b = $(_i:B)$(SUFOBJ) ;
local _o = $(_b:G=$(SOURCE_GRIST:E)) ;
Object $(_o) : $(_i) ;
Depends obj : $(_o) ;
}
}
}
}
rule
AvrMainFromObjects
rule
Library
{
{
Depends $(<) : $(>) ;
LibraryFromObjects $(<) : $(>:B)$(SUFOBJ) ;
Depends $(<) : $(<:D) ;
Objects $(>) ;
MkDir $(<:D) ;
Depends all : $(<) ;
Clean clean : $(<) ;
}
}
actions AvrMainFromObjects
rule Main
{
{
$(AVR_LD) $(LDFLAGS) -o $(<) $(>)
MainFromObjects $(<) : $(>:B)$(SUFOBJ) ;
Objects $(>) ;
}
}
rule AvrMain
rule Hex
{
AvrMainFromObjects $(<) : $(OUT_DIR)/$(>:B).o ;
AvrObjects $(>) ;
}
rule AvrHex
{
{
Depends $(<) : $(>) ;
Depends $(<) : $(>) ;
Depends $(<) : $(<:D
) ;
MakeLocate $(<) : $(LOCATE_TARGET
) ;
Depends hex : $(<) ;
Depends hex : $(<) ;
Clean clean : $(<) ;
Clean clean : $(<) ;
}
}
actions
Avr
Hex
actions Hex
{
{
$(AVR_
OBJCOPY) -O ihex -R .eeprom $(>) $(<)
$(
OBJCOPY) -O ihex -R .eeprom $(>) $(<)
}
}
rule
Avr
Upload
rule Upload
{
{
Depends $(1) : $(2) ;
Depends $(1) : $(2) ;
Depends $(2) : $(3) ;
Depends $(2) : $(3) ;
NotFile $(1) ;
NotFile $(1) ;
Always $(1) ;
Always $(1) ;
Always $(2) ;
Always $(2) ;
AvrUploadAction $(2) : $(3) ;
UploadAction $(2) : $(3) ;
}
actions UploadAction
{
$(AVRDUDE) $(AVRDUDEFLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i
}
}
actions AvrUploadAction
rule Arduino
{
{
$(AVRDUDE) $(AVRDUDE_FLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i
LINKFLAGS on $(<) = $(LINKFLAGS) -Wl,-Map=$(LOCATE_TARGET)/$(<:B).map ;
Main $(<) : $(>) ;
LinkLibraries $(<) : core libs ;
Hex $(<:B).hex : $(<) ;
for _p in $(PORTS)
{
Upload $(_p) : $(PORT_$(_p)) : $(<:B).hex ;
}
}
}
AvrMain $(OUT).elf : $(CORE_MODULES) $(LIB_MODULES) $(PROJECT_MODULES) ;
#
AvrHex $(OUT).hex : $(OUT).elf ;
# Targets
#
# Grab everything from the core directory
Library core : [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ;
AvrUpload p6 : /dev/tty.usbserial-A600eHIs : $(OUT).hex ;
# Grab everything from libraries. To avoid this "grab everything" behaviour, you
AvrUpload p4 : /dev/tty.usbserial-A40081RP : $(OUT).hex ;
# can specify specific modules to pick up in PROJECT_MODULES
AvrUpload p9 : /dev/tty.usbserial-A9007LmI : $(OUT).hex
;
Library libs : [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp *.c ]
;
# Main output executable
Arduino $(PWD:B).elf : $(PROJECT_MODULES) [ GLOB $(PROJECT_DIRS) : *.c *.cpp *.pde *.ino ] ;
tests/pingpair_blocking/pingpair_blocking.pde
View file @
dec61af8
...
@@ -166,6 +166,9 @@ void setup(void)
...
@@ -166,6 +166,9 @@ void setup(void)
//
//
radio
.
printDetails
();
radio
.
printDetails
();
if
(
role
==
role_pong_back
)
printf
(
"
\n\r
+OK "
);
}
}
void
loop
(
void
)
void
loop
(
void
)
...
...
tests/pingpair_blocking/printf.h
View file @
dec61af8
/*
/*
Copyright (C) 2011 J
ames Coliz, Jr.
<maniacbug@ymail.com>
Copyright (C) 2011 J
. Coliz
<maniacbug@ymail.com>
This program is free software; you can redistribute it and/or
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
modify it under the terms of the GNU General Public License
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
#ifndef __PRINTF_H__
#ifndef __PRINTF_H__
#define __PRINTF_H__
#define __PRINTF_H__
#i
nclude "WProgram.h"
#i
fdef ARDUINO
int
serial_putc
(
char
c
,
FILE
*
)
int
serial_putc
(
char
c
,
FILE
*
)
{
{
...
@@ -30,4 +30,8 @@ void printf_begin(void)
...
@@ -30,4 +30,8 @@ void printf_begin(void)
fdevopen
(
&
serial_putc
,
0
);
fdevopen
(
&
serial_putc
,
0
);
}
}
#else
#error This example is only for use on Arduino.
#endif // ARDUINO
#endif // __PRINTF_H__
#endif // __PRINTF_H__
tests/pingpair_blocking/runtest.py
View file @
dec61af8
#!/
opt/local
/bin/python
#!/
usr
/bin/python
import
sys
,
serial
import
sys
,
serial
def
read_until
(
token
):
def
read_until
(
token
):
while
1
:
while
1
:
line
=
ser
.
readline
(
None
,
"
\r
"
)
line
=
ser
.
readline
(
None
)
sys
.
stdout
.
write
(
line
)
sys
.
stdout
.
write
(
line
)
if
(
line
.
startswith
(
token
)):
if
(
line
.
startswith
(
token
)):
...
...
tests/pingpair_blocking/runtests.sh
View file @
dec61af8
#!/bin/sh
#!/bin/sh
# Connect
p6 to receiver, p4
to sender
# Connect
u0 to receiver, u1
to sender
jam p4 p6
||
exit
1
jam u0 u1
&&
expect test.ex
./runtest.py /dev/tty.usbserial-A600eHIs 1 &
./runtest.py /dev/tty.usbserial-A40081RP 1
||
(
kill
`
jobs
-p
`
&&
exit
1
)
kill
`
jobs
-p
`
exit
0
tests/pingpair_blocking/test.ex
0 → 100755
View file @
dec61af8
#/usr/bin/expect
set
timeout
100
spawn
picocom
-
b
57600
/
dev
/
ttyUSB0
expect
"+READY"
send
"1"
expect
"+OK"
spawn
picocom
-
b
57600
/
dev
/
ttyUSB1
expect
"+READY"
send
"1"
expect
"+OK"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment