Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
linkaddr-arch.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2020 Yago Fontoura do Rosario <yago.rosario@hotmail.com.br>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the copyright holder nor the names of its
14
* contributors may be used to endorse or promote products derived
15
* from this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
* OF THE POSSIBILITY OF SUCH DAMAGE.
29
*/
30
31
/**
32
* \addtogroup gecko
33
* @{
34
*
35
* \addtogroup gecko-sys System drivers
36
* @{
37
*
38
* \addtogroup gecko-linkaddr Link Address driver
39
* @{
40
*
41
* \file
42
* Link address implementation for the gecko.
43
* \author
44
* Yago Fontoura do Rosario <yago.rosario@hotmail.com.br>
45
*/
46
#include "contiki.h"
47
48
#include "
linkaddr.h
"
49
#include "
linkaddr-arch.h
"
50
51
#include "em_system.h"
52
#include <string.h>
53
/*---------------------------------------------------------------------------*/
54
static
inline
uint64_t
55
swap_long(uint64_t val)
56
{
57
val = (val & 0x00000000FFFFFFFF) << 32 | (val & 0xFFFFFFFF00000000) >> 32;
58
val = (val & 0x0000FFFF0000FFFF) << 16 | (val & 0xFFFF0000FFFF0000) >> 16;
59
val = (val & 0x00FF00FF00FF00FF) << 8 | (val & 0xFF00FF00FF00FF00) >> 8;
60
return
val;
61
}
62
/*---------------------------------------------------------------------------*/
63
void
64
populate_link_address
(
void
)
65
{
66
uint64_t system_number;
67
uint64_t system_number_net_order;
68
69
system_number = SYSTEM_GetUnique();
70
system_number_net_order = swap_long(system_number);
71
72
memcpy(
linkaddr_node_addr
.u8, &system_number_net_order, LINKADDR_SIZE);
73
}
74
/*---------------------------------------------------------------------------*/
75
/**
76
* @}
77
* @}
78
* @}
79
*/
linkaddr-arch.h
Link address implementation for the gecko.
populate_link_address
void populate_link_address(void)
Populates the link address using factory information.
Definition
linkaddr-arch.c:64
linkaddr_node_addr
linkaddr_t linkaddr_node_addr
The link-layer address of the node.
Definition
linkaddr.c:48
linkaddr.h
Header file for the link-layer address representation.
arch
cpu
gecko
sys
linkaddr-arch.c
Generated on
for Contiki-NG by
1.17.0