Revision dd56d656

View differences:

core/src/aos_system.c
239 239
#else /* (AMIROOS_CFG_SSSP_ENABLE == true) */
240 240
  _printSystemInfoLine(stream, "AMiRo-OS" , SYSTEM_INFO_NAMEWIDTH, "%u.%u.%u %s", AMIROOS_VERSION_MAJOR, AMIROOS_VERSION_MINOR, AMIROOS_VERSION_PATCH, AMIROOS_RELEASE_TYPE);
241 241
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
242
  _printSystemInfoLine(stream, "AMiRo-LLD" , SYSTEM_INFO_NAMEWIDTH, "%u.%u.%u %s (periphAL %u.%u)", AMIRO_LLD_VERSION_MAJOR, AMIRO_LLD_VERSION_MINOR, AMIRO_LLD_VERSION_PATCH, AMIRO_LLD_RELEASE_TYPE, PERIPHAL_VERSION_MAJOR, PERIPHAL_VERSION_MINOR);
242
  _printSystemInfoLine(stream, "AMiRo-LLD" , SYSTEM_INFO_NAMEWIDTH, "%u.%u.%u %s (periphAL %u.%u)", AMIROLLD_VERSION_MAJOR, AMIROLLD_VERSION_MINOR, AMIROLLD_VERSION_PATCH, AMIROLLD_RELEASE_TYPE, PERIPHAL_VERSION_MAJOR, PERIPHAL_VERSION_MINOR);
243 243
  _printSystemInfoLine(stream, "ChibiOS/RT" , SYSTEM_INFO_NAMEWIDTH, "%u.%u.%u %s", CH_KERNEL_MAJOR, CH_KERNEL_MINOR, CH_KERNEL_PATCH, (CH_KERNEL_STABLE == 1) ? "stable" : "non-stable");
244 244
  _printSystemInfoLine(stream, "ChibiOS/HAL", SYSTEM_INFO_NAMEWIDTH, "%u.%u.%u %s", CH_HAL_MAJOR, CH_HAL_MINOR, CH_HAL_PATCH, (CH_HAL_STABLE == 1) ? "stable" : "non-stable");
245 245
  _printSystemInfoLine(stream, "build type", SYSTEM_INFO_NAMEWIDTH,"%s", (AMIROOS_CFG_DBG == true) ? "debug" : "release");
modules/DiWheelDrive_1-1/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/DiWheelDrive_1-2/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/LightRing_1-0/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/LightRing_1-2/alldconf.h
28 28
#ifndef ALLDCONF_H
29 29
#define ALLDCONF_H
30 30

  
31
/*
32
 * compatibility guards
33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
45

  
46 31
/**
47 32
 * @brief   TLC5947 chained configuration
48 33
 */
49 34
#define TLC5947_LLD_CHAINED                     3
50 35

  
36
/*
37
 * common configuration
38
 */
39
#include <aos_alldconf.h>
40

  
51 41
#endif /* ALLDCONF_H */
52 42

  
53 43
/** @} */
modules/NUCLEO-F103RB/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/NUCLEO-F401RE/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/NUCLEO-F767ZI/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/NUCLEO-L476RG/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
modules/PowerManagement_1-1/alldconf.h
28 28
#ifndef ALLDCONF_H
29 29
#define ALLDCONF_H
30 30

  
31
/*
32
 * compatibility guards
33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
45

  
46 31
/**
47 32
 * @brief   BQ27500 hardware version
48 33
 */
......
55 40
#define PKxxxExxx_LLD_FREQUENCY_SPEC            4000
56 41
#define PKxxxExxx_LLD_FREQUENCY_MAX             6000
57 42

  
43
/*
44
 * common configuration
45
 */
46
#include <aos_alldconf.h>
47

  
58 48
#endif /* ALLDCONF_H */
59 49

  
60 50
/** @} */
modules/PowerManagement_1-2/alldconf.h
28 28
#ifndef ALLDCONF_H
29 29
#define ALLDCONF_H
30 30

  
31
/*
32
 * compatibility guards
33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
45

  
46 31
/**
47 32
 * @brief   BQ27500 hardware version
48 33
 */
......
55 40
#define PKxxxExxx_LLD_FREQUENCY_SPEC            4000
56 41
#define PKxxxExxx_LLD_FREQUENCY_MAX             6000
57 42

  
43
/*
44
 * common configuration
45
 */
46
#include <aos_alldconf.h>
47

  
58 48
#endif /* ALLDCONF_H */
59 49

  
60 50
/** @} */
modules/STM32F407G-DISC1/alldconf.h
29 29
#define ALLDCONF_H
30 30

  
31 31
/*
32
 * compatibility guards
32
 * common configuration
33 33
 */
34
#define _AMIRO_LLD_CFG_
35
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
36
#define AMIRO_LLD_CFG_VERSION_MINOR             1
37

  
38
/**
39
 * @brief   Width of the apalTime_t data type.
40
 *
41
 * @details Possible values are 8, 16, 32, and 64 bits.
42
 *          By definition time is represented at microsecond precision.
43
 */
44
#define AMIROLLD_CFG_TIME_SIZE                  32
34
#include <aos_alldconf.h>
45 35

  
46 36
#endif /* ALLDCONF_H */
47 37

  
periphery-lld/AMiRo-LLD
1
Subproject commit bb7c53481afaa76d993538c5e2b2eae430cfb441
1
Subproject commit 1304b12bd859603ad9f9b68493e1a3257f5e4595
periphery-lld/aos_alldconf.h
1
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2016..2019  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18

  
19
/**
20
 * @file
21
 * @brief   Common AMiRo-LLD configuration file for all modules.
22
 * @details Contains common AMiRo-LLD settings.
23
 * @{
24
 */
25

  
26
#ifndef AOS_ALLDCONF_H
27
#define AOS_ALLDCONF_H
28

  
29
#define _AMIRO_LLD_CFG_
30
#define AMIRO_LLD_CFG_VERSION_MAJOR             1
31
#define AMIRO_LLD_CFG_VERSION_MINOR             1
32

  
33
#include <aosconf.h>
34
#include <hal.h>
35

  
36
/**
37
 * @brief   Width of the apalTime_t data type.
38
 *
39
 * @details Possible values are 8, 16, 32, and 64 bits.
40
 *          By definition time is represented at microsecond precision.
41
 */
42
#if !defined(AMIROLLD_CFG_TIME_SIZE)
43
  #define AMIROLLD_CFG_TIME_SIZE                32
44
#endif
45

  
46
/**
47
 * @brief   Flag to enable/disable DBG API.
48
 */
49
#if !defined(AMIROLLD_CFG_DBG)
50
  #define AMIROLLD_CFG_DBG                      AMIROOS_CFG_DBG
51
#endif
52

  
53
/**
54
 * @brief   Flag to enable/disable GPIO API.
55
 */
56
#if !defined(AMIROLLD_CFG_GPIO)
57
  #if (HAL_USE_PAL == TRUE)
58
    #define AMIROLLD_CFG_GPIO                   true
59
  #else
60
    #define AMIROLLD_CFG_GPIO                   false
61
  #endif
62
#endif
63

  
64
/**
65
 * @brief   Flag to enable/disable PWM API.
66
 */
67
#if !defined(AMIROLLD_CFG_PWM)
68
  #if (HAL_USE_PWM == TRUE)
69
    #define AMIROLLD_CFG_PWM                    true
70
  #else
71
    #define AMIROLLD_CFG_PWM                    false
72
  #endif
73
#endif
74

  
75
/**
76
 * @brief   Flag to enable/disable QEI API.
77
 */
78
#if !defined(AMIROLLD_CFG_QEI)
79
  #if (HAL_USE_QEI == TRUE)
80
    #define AMIROLLD_CFG_QEI                    true
81
  #else
82
    #define AMIROLLD_CFG_QEI                    false
83
  #endif
84
#endif
85

  
86
/**
87
 * @brief   Flag to enable/disable I2C API.
88
 */
89
#if !defined(AMIROLLD_CFG_I2C)
90
  #if (HAL_USE_I2C == TRUE)
91
    #define AMIROLLD_CFG_I2C                    true
92
  #else
93
    #define AMIROLLD_CFG_I2C                    false
94
  #endif
95
#endif
96

  
97
/**
98
 * @brief   Flag to enable/disable SPI API.
99
 */
100
#if !defined(AMIROLLD_CFG_SPI)
101
  #if (HAL_USE_SPI == TRUE)
102
    #define AMIROLLD_CFG_SPI                    true
103
  #else
104
    #define AMIROLLD_CFG_SPI                    false
105
  #endif
106
#endif
107

  
108
/**
109
 * @brief   Hook macro to insert a custom header to periphAL.h file.
110
 */
111
#if !defined(AMIROLLD_CFG_PERIPHAL_HEADER)
112
  #define AMIROLLD_CFG_PERIPHAL_HEADER          <aos_periphAL.h>
113
#endif
114

  
115
#endif /* AOS_ALLDCONF_H */
116

  
117
/** @} */
periphery-lld/aos_periphAL.c
1
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2016..2019  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18

  
19
#include <periphAL.h>
20

  
21
/*============================================================================*/
22
/* DEBUG                                                                      */
23
/*============================================================================*/
24

  
25
#if (AMIROOS_CFG_DBG == true)
26

  
27
#include <amiroos.h>
28
#include <chprintf.h>
29

  
30
void apalDbgAssertMsg(const bool c, const char* fmt, ...)
31
{
32
  if (!c) {
33
    va_list ap;
34

  
35
    va_start(ap, fmt);
36
    chvprintf((BaseSequentialStream*)&aos.iostream, fmt, ap);
37
    va_end(ap);
38
    chThdExit(MSG_RESET);
39
  }
40

  
41
  return;
42
}
43

  
44
int apalDbgPrintf(const char* fmt, ...)
45
{
46
  va_list ap;
47

  
48
  va_start(ap, fmt);
49
  const int chars = chvprintf((BaseSequentialStream*)&aos.iostream, fmt, ap);
50
  va_end(ap);
51

  
52
  return chars;
53
}
54

  
55
#endif /* (AMIROOS_CFG_DBG == true) */
56

  
57
/*============================================================================*/
58
/* TIMING                                                                     */
59
/*============================================================================*/
60

  
61
#if (AMIROOS_CFG_DBG == true)
62

  
63
void apalSleep(apalTime_t us)
64
{
65
  // check if the specified time can be represented by the system
66
  apalDbgAssert(us <= chTimeI2US(TIME_INFINITE));
67

  
68
  const sysinterval_t interval = chTimeUS2I(us);
69
  // TIME_IMMEDIATE makes no sense and would even cause system halt
70
  if (interval != TIME_IMMEDIATE) {
71
    chThdSleep(interval);
72
  }
73

  
74
  return;
75
}
76

  
77
#endif /* (AMIROOS_CFG_DBG == true) */
78

  
79
/*============================================================================*/
80
/* GPIO                                                                       */
81
/*============================================================================*/
82

  
83
#if (HAL_USE_PAL == TRUE)
84