154 lines
4.1 KiB
C
154 lines
4.1 KiB
C
/* Autogenerated by /usr/bin/halcompile on Wed Nov 27 15:02:36 2024 -- do not edit */
|
|
#include "rtapi.h"
|
|
#ifdef RTAPI
|
|
#include "rtapi_app.h"
|
|
#endif
|
|
#include "rtapi_string.h"
|
|
#include "rtapi_errno.h"
|
|
#include "hal.h"
|
|
#include "rtapi_math64.h"
|
|
|
|
static int comp_id;
|
|
|
|
#ifdef MODULE_INFO
|
|
MODULE_INFO(linuxcnc, "component:collisionavoid:Avoid Collisions");
|
|
MODULE_INFO(linuxcnc, "pin:xaxis:float:0:in::None:None");
|
|
MODULE_INFO(linuxcnc, "pin:yaxis:float:0:in::None:None");
|
|
MODULE_INFO(linuxcnc, "pin:zaxis:float:0:in::None:None");
|
|
MODULE_INFO(linuxcnc, "pin:chuck:bit:0:in::None:None");
|
|
MODULE_INFO(linuxcnc, "pin:table:bit:0:in::None:None");
|
|
MODULE_INFO(linuxcnc, "pin:stop:bit:0:out::None:None");
|
|
MODULE_INFO(linuxcnc, "license:GPL");
|
|
MODULE_LICENSE("GPL");
|
|
#endif // MODULE_INFO
|
|
|
|
|
|
struct __comp_state {
|
|
struct __comp_state *_next;
|
|
hal_float_t *xaxis;
|
|
hal_float_t *yaxis;
|
|
hal_float_t *zaxis;
|
|
hal_bit_t *chuck;
|
|
hal_bit_t *table;
|
|
hal_bit_t *stop;
|
|
};
|
|
#include <stdlib.h>
|
|
struct __comp_state *__comp_first_inst=0, *__comp_last_inst=0;
|
|
|
|
static int __comp_get_data_size(void);
|
|
#undef TRUE
|
|
#define TRUE (1)
|
|
#undef FALSE
|
|
#define FALSE (0)
|
|
#undef true
|
|
#define true (1)
|
|
#undef false
|
|
#define false (0)
|
|
|
|
static int export(char *prefix, long extra_arg) {
|
|
int r = 0;
|
|
int sz = sizeof(struct __comp_state) + __comp_get_data_size();
|
|
struct __comp_state *inst = hal_malloc(sz);
|
|
memset(inst, 0, sz);
|
|
r = hal_pin_float_newf(HAL_IN, &(inst->xaxis), comp_id,
|
|
"%s.xaxis", prefix);
|
|
if(r != 0) return r;
|
|
r = hal_pin_float_newf(HAL_IN, &(inst->yaxis), comp_id,
|
|
"%s.yaxis", prefix);
|
|
if(r != 0) return r;
|
|
r = hal_pin_float_newf(HAL_IN, &(inst->zaxis), comp_id,
|
|
"%s.zaxis", prefix);
|
|
if(r != 0) return r;
|
|
r = hal_pin_bit_newf(HAL_IN, &(inst->chuck), comp_id,
|
|
"%s.chuck", prefix);
|
|
if(r != 0) return r;
|
|
r = hal_pin_bit_newf(HAL_IN, &(inst->table), comp_id,
|
|
"%s.table", prefix);
|
|
if(r != 0) return r;
|
|
r = hal_pin_bit_newf(HAL_OUT, &(inst->stop), comp_id,
|
|
"%s.stop", prefix);
|
|
if(r != 0) return r;
|
|
if(__comp_last_inst) __comp_last_inst->_next = inst;
|
|
__comp_last_inst = inst;
|
|
if(!__comp_first_inst) __comp_first_inst = inst;
|
|
return 0;
|
|
}
|
|
int rtapi_app_main(void) {
|
|
int r = 0;
|
|
comp_id = hal_init("collisionavoid");
|
|
if(comp_id < 0) return comp_id;
|
|
r = export("collisionavoid", 0);
|
|
if(r) {
|
|
hal_exit(comp_id);
|
|
} else {
|
|
hal_ready(comp_id);
|
|
}
|
|
return r;
|
|
}
|
|
|
|
void rtapi_app_exit(void) {
|
|
hal_exit(comp_id);
|
|
}
|
|
static void user_mainloop(void);
|
|
int argc=0; char **argv=0;
|
|
int main(int argc_, char **argv_) {
|
|
argc = argc_; argv = argv_;
|
|
|
|
if(rtapi_app_main() < 0) return 1;
|
|
user_mainloop();
|
|
rtapi_app_exit();
|
|
return 0;
|
|
}
|
|
|
|
#undef FUNCTION
|
|
#define FUNCTION(name) static void name(struct __comp_state *__comp_inst, long period)
|
|
#undef EXTRA_SETUP
|
|
#define EXTRA_SETUP() static int extra_setup(struct __comp_state *__comp_inst, char *prefix, long extra_arg)
|
|
#undef EXTRA_CLEANUP
|
|
#define EXTRA_CLEANUP() static void extra_cleanup(void)
|
|
#undef fperiod
|
|
#define fperiod (period * 1e-9)
|
|
#undef xaxis
|
|
#define xaxis (0+*__comp_inst->xaxis)
|
|
#undef yaxis
|
|
#define yaxis (0+*__comp_inst->yaxis)
|
|
#undef zaxis
|
|
#define zaxis (0+*__comp_inst->zaxis)
|
|
#undef chuck
|
|
#define chuck (0+*__comp_inst->chuck)
|
|
#undef table
|
|
#define table (0+*__comp_inst->table)
|
|
#undef stop
|
|
#define stop (*__comp_inst->stop)
|
|
#undef FOR_ALL_INSTS
|
|
#define __comp_inst __comp_first_inst
|
|
#define FOR_ALL_INSTS()
|
|
|
|
|
|
#line 19 "collisionavoid.comp"
|
|
|
|
#include <stdio.h> /* Standard input/output definitions */
|
|
|
|
|
|
void user_mainloop(void)
|
|
{
|
|
FOR_ALL_INSTS() //needed for resaons
|
|
{
|
|
while(1)
|
|
{
|
|
usleep(500);
|
|
if(chuck == 1 && xaxis > 107 && yaxis < 32 && zaxis < -25 ) stop = 1;
|
|
else if(table == 1 && xaxis > 107 && yaxis < 32 && zaxis < -25 ) stop = 1;
|
|
else stop = 0;
|
|
|
|
}
|
|
}
|
|
exit(0);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int __comp_get_data_size(void) { return 0; }
|