KM3NeT CLB  2.0
KM3NeT CLB v2 Embedded Software
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
errata.c
1 /*
2  * KM3NeT CLB v2 Firmware
3  * ----------------------
4  *
5  * Copyright 2012-2017 KM3NeT Collaboration
6  *
7  * All Rights Reserved.
8  *
9  *
10  * File : errata.c
11  * Created : 24 apr. 2017
12  * Author : Vincent van Beveren
13  */
14 
15 #include "kernel/errata.h"
16 #include "util/macro.h"
17 
18 #include "util/log.h"
19 
20 LOG_DEF(Errata)
21 
22 #define ID_MASK 0x00FFFFFF
23 #define CODE_SHIFT 24
24 
25 #define ERRATA(DOM_ID, CODE) ((ID_MASK & DOM_ID) | ((~ID_MASK) & (CODE << CODE_SHIFT))),
26 
27 
28 static const uint32_t errata_list[] = {
29  ERRATA_LIST
30 };
31 
32 
33 
34 
35 static uint8_t _errataMask = 0xFF;
36 
37 void errataInit(uint32_t domId)
38 {
39 
40  for (int i = 0; i < arraylength(errata_list); ++i)
41  {
42  if ((errata_list[i] & ID_MASK) == ( domId & ID_MASK )) {
43  _errataMask = 0xFF & ( errata_list[i] >> CODE_SHIFT );
44  logInfo("Errata applied: %02x", _errataMask);
45  return;
46  }
47  }
48  _errataMask = 0;
49  logInfo("No errata applicable");
50 }
51 
52 bool errataActive(int errata)
53 {
54  return ( errata & _errataMask ) != 0;
55 }
#define arraylength(N)
Returns the length of the array.
Definition: macro.h:167
#define LOG_DEF(NAME,...)
Define a logger for a module.
Definition: log.h:129
Provides common macros.
Implements a generic logger facility.
#define logInfo(MSG,...)
Write a log message with formatting on info level.
Definition: log.h:202