targets/beremiz.h
author Edouard Tisserant <edouard@beremiz.fr>
Thu, 05 Dec 2024 13:56:59 +0100
changeset 4060 d2f5eb3c7d6e
parent 3732 929276eea252
permissions -rw-r--r--
py_ext: fix CSV Writer

fix POU logic :
- SAVE is a BOOL
- invocation of py_eval on rising edge of SAVE
- remove save python argument

fix python:
- use no encoding for file open (python2)
- re-use detected dialect if any
- use no "rt+" and truncate since no need to re-sniff dialect for output file
- return "OK" instead of "#SUCCESS", preventing POU logic to ACK result
- support creating new line if writing just after last line
- support appending data on short rows

fix example:
- use a HMI:Button to trigger CSV write instead of HMI:Input +1
- reload CSVs on on each new CSV opened in file browser
- add display of CSV write output
2504
f3aced6c5f8b fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2503
diff changeset
     1
#ifndef _BEREMIZ_H_
f3aced6c5f8b fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2503
diff changeset
     2
#define _BEREMIZ_H_
f3aced6c5f8b fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2503
diff changeset
     3
1001
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     4
/* Beremiz' header file for use by extensions */
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     5
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     6
#include "iec_types.h"
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     7
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     8
#define LOG_LEVELS 4
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
     9
#define LOG_CRITICAL 0
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    10
#define LOG_WARNING 1
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    11
#define LOG_INFO 2
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    12
#define LOG_DEBUG 3
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    13
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    14
extern unsigned long long common_ticktime__;
2175
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    15
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    16
#ifdef TARGET_LOGGING_DISABLE
2503
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    17
static inline int LogMessage(uint8_t level, char* buf, uint32_t size)
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    18
{
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    19
	(void)level;
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    20
	(void)buf;
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    21
	(void)size;
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    22
	return 0;
6ffeffb6d635 remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2175
diff changeset
    23
}
2175
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    24
#else
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    25
int     LogMessage(uint8_t level, char* buf, uint32_t size);
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    26
#endif
667f7de69cf6 Fix compilation problem in case of TARGET_LOGGING_DISABLE turned on and TARGET_DEBUG_DISABLE turned off
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1050
diff changeset
    27
1050
56bef276055e Made declaration from beremiz.h available to C pragmas in POUs. Added AtomicCompareExchange to beremiz.h
Edouard Tisserant
parents: 1002
diff changeset
    28
long AtomicCompareExchange(long* atomicvar,long compared, long exchange);
3294
e3db472b0dfb Runtime+SVGHMI: Added a generic way to wakeup non-real-time threads from real-time PLC thread. Replace SVGHMI specific calls in Linux and Xenomai implementations of plc_main.c. Fixed xenomai build, xeno-config making problems with --no-auto-init argument.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2504
diff changeset
    29
void *create_RT_to_nRT_signal(char* name);
e3db472b0dfb Runtime+SVGHMI: Added a generic way to wakeup non-real-time threads from real-time PLC thread. Replace SVGHMI specific calls in Linux and Xenomai implementations of plc_main.c. Fixed xenomai build, xeno-config making problems with --no-auto-init argument.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2504
diff changeset
    30
void delete_RT_to_nRT_signal(void* handle);
e3db472b0dfb Runtime+SVGHMI: Added a generic way to wakeup non-real-time threads from real-time PLC thread. Replace SVGHMI specific calls in Linux and Xenomai implementations of plc_main.c. Fixed xenomai build, xeno-config making problems with --no-auto-init argument.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2504
diff changeset
    31
int wait_RT_to_nRT_signal(void* handle);
e3db472b0dfb Runtime+SVGHMI: Added a generic way to wakeup non-real-time threads from real-time PLC thread. Replace SVGHMI specific calls in Linux and Xenomai implementations of plc_main.c. Fixed xenomai build, xeno-config making problems with --no-auto-init argument.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2504
diff changeset
    32
int unblock_RT_to_nRT_signal(void* handle);
3295
0375d801fff7 Runtime+SVGHMI: Add generic wakeup of threads from PLC thread to windows implementation of plc_main.c. Also added nRT_reschedule to abstract sched_yield.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 3294
diff changeset
    33
void nRT_reschedule(void);
1001
3f966bbb3fba Added beremiz.h header file for extensions
Edouard Tisserant
parents:
diff changeset
    34
3732
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    35
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    36
#ifdef REALTIME_LINUX
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    37
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    38
#ifndef PLC_THREAD_PRIORITY
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    39
#define PLC_THREAD_PRIORITY 80
2504
f3aced6c5f8b fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2503
diff changeset
    40
#endif
3732
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    41
 
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    42
#endif
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    43
929276eea252 Runtime: Add RealTime checkbox in Linux target options to enable PREEMPT_RT scheduling.
Edouard Tisserant
parents: 3295
diff changeset
    44
#endif