mirror of
https://github.com/tio/tio.git
synced 2026-05-01 14:57:59 +02:00
implemented read_ts as a lua function
This commit is contained in:
parent
ab678e6c88
commit
9d74fe9e74
5 changed files with 93 additions and 4 deletions
16
examples/lua/pvt.lua
Normal file
16
examples/lua/pvt.lua
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
send("\n")
|
||||
msleep(100)
|
||||
-- read buffer with 0.5 sec delay
|
||||
read(160, 500)
|
||||
send("S")
|
||||
msleep(100)
|
||||
-- read buffer
|
||||
read(160, 500)
|
||||
-- query Parallel Value Table
|
||||
send("t")
|
||||
print(read(300, 500))
|
||||
while true do
|
||||
sleep(1)
|
||||
send("t")
|
||||
print(read(300, 500))
|
||||
end
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
project('tio', 'c',
|
||||
version : '3.8',
|
||||
version : '3.8.1',
|
||||
license : [ 'GPL-2'],
|
||||
meson_version : '>= 0.53.2',
|
||||
default_options : [ 'warning_level=2', 'buildtype=release', 'c_std=gnu99' ]
|
||||
)
|
||||
|
||||
# The tag date of the project_version(), update when the version bumps.
|
||||
version_date = '2024-08-31'
|
||||
version_date = '2024-10-24'
|
||||
|
||||
# Test for dynamic baudrate configuration interface
|
||||
compiler = meson.get_compiler('c')
|
||||
|
|
|
|||
73
src/script.c
73
src/script.c
|
|
@ -37,6 +37,7 @@
|
|||
#include "log.h"
|
||||
#include "script.h"
|
||||
#include "fs.h"
|
||||
#include "timestamp.h"
|
||||
|
||||
#define MAX_BUFFER_SIZE 2000 // Maximum size of circular buffer
|
||||
|
||||
|
|
@ -301,6 +302,77 @@ error:
|
|||
return 2;
|
||||
}
|
||||
|
||||
// lua: ret,string = read_ts(size, timeout)
|
||||
static int read_ts(lua_State *L)
|
||||
{
|
||||
int size = lua_tointeger(L, 1) + 1; //plus one for null-terminated string
|
||||
int timeout = lua_tointeger(L, 2);
|
||||
int ret = 0;
|
||||
|
||||
char *buffer = malloc(size);
|
||||
if (buffer == NULL)
|
||||
{
|
||||
ret = -1; // Error
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (timeout == 0)
|
||||
{
|
||||
timeout = -1; // Wait forever
|
||||
}
|
||||
|
||||
ssize_t bytes_read = read_poll(device_fd, buffer, size, timeout);
|
||||
if (bytes_read < 0)
|
||||
{
|
||||
ret = -1; // Error
|
||||
goto error;
|
||||
}
|
||||
else if (bytes_read == 0)
|
||||
{
|
||||
ret = 0; // Timeout
|
||||
goto error;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer[bytes_read] = (char)0;
|
||||
}
|
||||
|
||||
if (option.timestamp)
|
||||
{
|
||||
char *pTimeStampNow;
|
||||
pTimeStampNow = timestamp_current_time();
|
||||
if (pTimeStampNow)
|
||||
{
|
||||
tio_printf("%s", buffer); //does timestamps for us
|
||||
if (option.log)
|
||||
{
|
||||
log_printf("\n[%s] %s", pTimeStampNow, buffer);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ssize_t i=0; i<bytes_read; i++)
|
||||
{
|
||||
putchar(buffer[i]);
|
||||
|
||||
if (option.log)
|
||||
{
|
||||
log_putc(buffer[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ret = bytes_read;
|
||||
|
||||
error:
|
||||
lua_pushnumber(L, ret);
|
||||
if (buffer != NULL)
|
||||
{
|
||||
lua_pushstring(L, buffer);
|
||||
free(buffer);
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
// lua: expect(string, timeout)
|
||||
static int expect(lua_State *L)
|
||||
{
|
||||
|
|
@ -457,6 +529,7 @@ static const struct luaL_Reg tio_lib[] =
|
|||
{ "modem_send", modem_send},
|
||||
{ "send", send_},
|
||||
{ "read", read_string},
|
||||
{ "read_ts", read_ts },
|
||||
{ "expect", expect},
|
||||
{ "exit", exit_},
|
||||
{ "tty_search", tty_search_},
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@
|
|||
#include "options.h"
|
||||
#include "timestamp.h"
|
||||
|
||||
#define TIME_STRING_SIZE_MAX 24
|
||||
|
||||
char *timestamp_current_time(void)
|
||||
{
|
||||
static char time_string[TIME_STRING_SIZE_MAX];
|
||||
|
|
|
|||
|
|
@ -32,5 +32,7 @@ typedef enum
|
|||
TIMESTAMP_END,
|
||||
} timestamp_t;
|
||||
|
||||
#define TIME_STRING_SIZE_MAX 24
|
||||
|
||||
char *timestamp_current_time(void);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue