summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/date/date.cc
blob: daffd74c0fe8b50f47b47dad0a3bf0df60a2d030 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// date.cc
// buzz - Programme du robot Efrei Robotique I1-I2 2003
// Copyright (C) 2003 Nicolas Schodet
//
#include "date.h"

#include <sys/time.h>
#include <time.h>

// Pointeur vers l'instance unique.
Date *Date::m_instance = 0;

// Constructeur.
Date::Date (void)
{
    m_start = getDate ();
    m_round = -1;
    m_instance = this;
}

// Destructeur.
Date::~Date (void)
{
    m_instance = 0;
}

// Signale le d�but du match.
void
Date::startRound (void)
{
    m_round = getDate ();
}

// Retourne la date syst�me.
int
Date::getDate (void)
{
    timeval tv;
    gettimeofday (&tv, 0);
    // �a veut dire, un bug tous les 11 jours...
    // Cette ann�e : le 26/05/2003, et le 06/05/2003. Mais le robot n'est pas
    // � l'heure de toue fa�on.
    return (tv.tv_sec % 1000000) * 1000 + tv.tv_usec / 1000;
}

// Attend un nombre de millisecondes.
void
Date::wait (int t)
{
    timespec ts, r;
    ts.tv_sec = t / 1000;
    ts.tv_nsec = t * 1000000;
    nanosleep (&ts, &r);
}