Hans-Gert Dahmen
13 years ago
4 changed files with 160 additions and 30 deletions
@ -0,0 +1,78 @@ |
|||
/*
|
|||
* Description: Request time strings from a can-master |
|||
* and show them in an animation |
|||
* Author: hansi |
|||
*/ |
|||
|
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <avr/pgmspace.h> |
|||
#include "../config.h" |
|||
#include "../can.h" |
|||
#include "../lap.h" |
|||
#include "../util.h" |
|||
#include "../scrolltext.h" |
|||
|
|||
//address of the time master
|
|||
#define TIME_MASTER_ADDR 0x00 |
|||
|
|||
//update timeout in ms
|
|||
#define TIME_UPDATE_TIMEOUT 100 |
|||
|
|||
//hackhack
|
|||
extern can_addr myaddr; |
|||
|
|||
//send a time request packet via can
|
|||
void time_request(void) |
|||
{ |
|||
pdo_message msg; |
|||
|
|||
//source address
|
|||
msg.addr_src = myaddr; |
|||
msg.port_src = PORT_MGT; |
|||
|
|||
//destination address
|
|||
msg.addr_dst = TIME_MASTER_ADDR; |
|||
msg.port_dst = PORT_MGT; |
|||
|
|||
//time request command
|
|||
msg.cmd = FKT_MGT_TIMEREQUEST; |
|||
|
|||
//set length and transmit
|
|||
msg.dlc = 1; |
|||
can_transmit((can_message *)&msg); |
|||
} |
|||
|
|||
//update time via can, possibly blocking
|
|||
uint8_t time_update(void) |
|||
{ |
|||
uint8_t timeout = TIME_UPDATE_TIMEOUT; |
|||
|
|||
//set "time-has-been-updated" to false
|
|||
lap_time_update = 0; |
|||
|
|||
//send request
|
|||
time_request(); |
|||
|
|||
//wait some time for a reply in 1ms steps
|
|||
while((lap_time_update == 0) && (timeout-- > 0)) |
|||
wait(1); |
|||
|
|||
return lap_time_update; |
|||
} |
|||
|
|||
//display the time
|
|||
void time_anim(void) |
|||
{ |
|||
char timestring[48]; |
|||
|
|||
//update time and return if we had no success
|
|||
if(time_update() == 0) |
|||
return; |
|||
|
|||
//convert the time to a string
|
|||
sprintf_P(timestring, PSTR(">+:p42d50/#%02hi#<;+p42d50/# %02hi#x49y8b255p42d50#:"), lap_time_h, lap_time_m); |
|||
|
|||
//show the time
|
|||
scrolltext(timestring); |
|||
} |
@ -0,0 +1,19 @@ |
|||
/*
|
|||
* Description: Request time strings from a can-master |
|||
* and show them in an animation |
|||
* Author: hansi |
|||
*/ |
|||
|
|||
#ifndef BORG_TIME_H_ |
|||
#define BORG_TIME_H_ |
|||
|
|||
//send a time request packet via can
|
|||
void time_request(void); |
|||
|
|||
//update time via can, possibly blocking
|
|||
uint8_t time_update(void); |
|||
|
|||
//display the time
|
|||
void time_anim(void); |
|||
|
|||
#endif /* BORG_TIME_H_ */ |
Loading…
Reference in new issue