Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
fwatch
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
8
Issues
8
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
fwatch
Commits
0bb54a12
Commit
0bb54a12
authored
Sep 04, 2014
by
Projects
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
magnetometer & compass: Interrupt events are supported (*not tested yet*).
parent
6b742351
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
48 additions
and
6 deletions
+48
-6
event.h
sw/common/event.h
+11
-1
irq_dispatcher.c
sw/freertos/src/irq_dispatcher.c
+37
-5
No files found.
sw/common/event.h
View file @
0bb54a12
...
...
@@ -32,7 +32,7 @@
*/
enum
event_type
{
BUTTON_PRESSED
,
SENSOR
,
SENSOR
_INT
,
RTC_TICK
};
...
...
@@ -46,6 +46,15 @@ enum button_name {
BUT_BR
// bottom right
};
/**
* Sensor interrupts.
*/
enum
sensor_type
{
// LIGHT, // disabled for the time being
MAGNETOMETER
,
ACCELEROMETER
};
/**
* Structure describing events received by applications.
*/
...
...
@@ -56,6 +65,7 @@ struct event {
///> Data dependent on the event type
union
{
enum
button_name
button
;
enum
sensor_type
sensor
;
}
data
;
};
...
...
sw/freertos/src/irq_dispatcher.c
View file @
0bb54a12
...
...
@@ -40,13 +40,45 @@ static portBASE_TYPE gpio_irq_dispatcher(uint32_t flags)
// Fill the event data
struct
event
evt
;
evt
.
type
=
BUTTON_PRESSED
;
switch
(
flags
)
{
case
0x01
:
evt
.
data
.
button
=
BUT_TR
;
break
;
case
0x40
:
evt
.
data
.
button
=
BUT_BL
;
break
;
case
0x80
:
evt
.
data
.
button
=
BUT_TL
;
break
;
case
0x0100
:
evt
.
data
.
button
=
BUT_BR
;
break
;
// Buttons
case
(
1
<<
0
):
// PA0
evt
.
type
=
BUTTON_PRESSED
;
evt
.
data
.
button
=
BUT_TR
;
break
;
case
(
1
<<
6
):
// PC6
evt
.
type
=
BUTTON_PRESSED
;
evt
.
data
.
button
=
BUT_BL
;
break
;
case
(
1
<<
7
):
// PC7
evt
.
type
=
BUTTON_PRESSED
;
evt
.
data
.
button
=
BUT_TL
;
break
;
case
(
1
<<
8
):
// PA8
evt
.
type
=
BUTTON_PRESSED
;
evt
.
data
.
button
=
BUT_BR
;
break
;
// Sensors
// There is a conflict with the bottom-left button interrupt
// case (1 << 6): // PA6
// evt.type = SENSOR_INT;
// evt.data.sensor = LIGHT;
// break;
case
(
1
<<
10
):
// PA10
evt
.
type
=
SENSOR_INT
;
evt
.
data
.
sensor
=
MAGNETOMETER
;
break
;
case
(
1
<<
5
):
// PD5
evt
.
type
=
SENSOR_INT
;
evt
.
data
.
sensor
=
ACCELEROMETER
;
break
;
// Unexpected event, do not send it
default:
return
xHigherPriorityTaskWoken
;
...
...
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