#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h>
#include <errno.h>
#include <dlfcn.h>
#include "intypes.h"
#include "log.h"
#include "edsm.h"
#include "load-tool.h"
/* M0 event */
#define EC_PRINT_DONE 0
int hw2_idle_enter(struct edsm *me)
{
struct ecap_engine *ecap = me->ecap;
start_tick_oneshot(ecap, me->timers[0]);
return 0;
}
int hw2_print_enter(struct edsm *me)
{
/* get context */
int *c = (int *)me->data;
printf("Hello, World! (%d)\n", ++(*c));
edsm_put_event(me, EC_PRINT_DONE);
return 0;
}
int hw2_done_enter(struct edsm *me)
{
struct ecap_engine *ecap = me->ecap;
log_msg("Good Bye, World!\n");
return 1;
}
struct edsm_desc *hw_desc;
struct state *hw_state_set;
struct edsm *hw;
int cnt = 0;
int main(int argc, char *argv[], char *envp[])
{
int nch;
hw_desc = edsm_load_desc("./", "hw2.smd");
hw_state_set = edsm_get_state_set(hw_desc);
nch = hw_desc->nch;
edsm_load_engine("./", "libecap-poll.so", nch);
hw = edsm_create(hw_desc, hw_state_set, &cnt);
log_msg("INFO: started\n");
/* get the ball rolling */
edsm_run_engine();
log_msg("INFO: terminated\n\n");
exit(0);
}