Added some comments. Fixed some accesses to potential NULL pointers.
/*
* (c) 2003 Mario de Sousa
*
* Offered to the public under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* This code is made available on the understanding that it will not be
* used in safety-critical situations without a full and competent review.
*/
/*
* An IEC 61131-3 IL and ST compiler.
*
* Based on the
* FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10)
*
*/
/*
* Code to be included into the code generated by the 4th stage.
*
* This is part of the 4th stage that generates
* a c++ source program equivalent to the IL and ST
* code.
*/
TIME __CURRENT_TIME;
int main(int argc, char **argv) {
struct timespec tp;
if (plc_init(DEFAULT_MODULE_NAME, argc, argv) < 0) {
printf("Error connecting to PLC.\n");
exit(EXIT_FAILURE);
}
__configuration_c config;
/* loop... */
while (1) {
plc_scan_beg();
plc_update();
if (clock_gettime(CLOCK_REALTIME, &tp) < 0)
IEC_error();
__CURRENT_TIME = tp;
config.run();
plc_update();
plc_scan_end();
} /* while (1) */
return -1;
}