mirror of https://github.com/ArduPilot/ardupilot
AP_Scripting: fixed use of clock and time in lua
not available on stm32
This commit is contained in:
parent
00d6f94907
commit
2ce936db94
|
@ -1044,3 +1044,15 @@ LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver, size_t sz) {
|
|||
(LUAI_UACNUMBER)ver, (LUAI_UACNUMBER)*v);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
32 bit random number generator for lua internals
|
||||
*/
|
||||
uint32_t lua_random32(void)
|
||||
{
|
||||
static uint32_t m_z = 1234;
|
||||
static uint32_t m_w = 76542;
|
||||
m_z = 36969 * (m_z & 0xFFFFu) + (m_z >> 16);
|
||||
m_w = 18000 * (m_w & 0xFFFFu) + (m_w >> 16);
|
||||
return ((m_z << 16) + m_w);
|
||||
}
|
||||
|
|
|
@ -36,6 +36,8 @@ typedef struct luaL_Reg {
|
|||
|
||||
#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number))
|
||||
|
||||
uint32_t lua_random32(void);
|
||||
|
||||
LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);
|
||||
#define luaL_checkversion(L) \
|
||||
luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "lstring.h"
|
||||
#include "ltable.h"
|
||||
#include "ltm.h"
|
||||
#include "lauxlib.h"
|
||||
|
||||
// lua code does lots of casting, these warnings are not helpful
|
||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||
|
@ -44,10 +45,14 @@
|
|||
** a macro to help the creation of a unique random seed when a state is
|
||||
** created; the seed is used to randomize hashes.
|
||||
*/
|
||||
#if defined(ARDUPILOT_BUILD)
|
||||
#define luai_makeseed() lua_random32()
|
||||
#else
|
||||
#if !defined(luai_makeseed)
|
||||
#include <time.h>
|
||||
#define luai_makeseed() cast(unsigned int, time(NULL))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -256,6 +256,9 @@ typedef unsigned int IdxT;
|
|||
** is to copy them to an array of a known type and use the array values.
|
||||
*/
|
||||
static unsigned int l_randomizePivot (void) {
|
||||
#if defined(ARDUPILOT_BUILD)
|
||||
return lua_random32();
|
||||
#else
|
||||
clock_t c = clock();
|
||||
time_t t = time(NULL);
|
||||
unsigned int buff[sof(c) + sof(t)];
|
||||
|
@ -265,6 +268,7 @@ static unsigned int l_randomizePivot (void) {
|
|||
for (i = 0; i < sof(buff); i++)
|
||||
rnd += buff[i];
|
||||
return rnd;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* } */
|
||||
|
|
Loading…
Reference in New Issue