summaryrefslogtreecommitdiff
path: root/cesar/cp/sta/mgr/inc/sta.h
blob: a5abd5d8317544452b782c3e2e3e9e514f881c8a (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#ifndef cp_sta_mgr_inc_sta_h
#define cp_sta_mgr_inc_sta_h
/* Cesar project {{{
 *
 * Copyright (C) 2008 Spidcom
 *
 * <<<Licence>>>
 *
 * }}} */
/**
 * \file    cp/sta/mgr/inc/sta.h
 * \brief   Stations data.
 * \ingroup cp_sta_mgr
 *
 * « long description »
 */

#include "cp/sta/mgr/sta.h"
#include "cp/sta/mgr/net.h"

/**
 * Control plane station.
 */
struct cp_sta_private_t
{
    /** Public interface. */
    cp_sta_t public_data;

    /**
     * Station's tei.
     */
    cp_tei_t tei;

    /**
     * Station's mac address.
     */
    mac_t mac_address;

    /**
     * Indicate if the station is Visible by our station.
     */
    bool visible;

    /**
     * Indicate if the station is CCo.
     */
    bool is_cco;

    /**
     * GLID provided to the PCO to transmit a proxy beacon.
     */
    u8 pco_glid;

    /**
     * Pointer to its network.
     */
    cp_net_t *net;

    /**
     * Association confirmed.
     */
    bool association_confirmed;
};
typedef struct cp_sta_private_t cp_sta_private_t;


/**
 * Return a station object initialised.
 * \param  cache  the slab cache.
 * \return  a station object initialised.
 */
cp_sta_t *
cp_sta_init (slab_cache_t *cache);

/**
 * Uninit the station.
 * \param  sta  the station to uninit.
 */
void
cp_sta_uninit (cp_sta_t *sta);


#endif /* cp_sta_mgr_inc_sta_h */