/* * helper_impl.c * Implementacje funkcji z helper.h (tylko extern, nie inline) */ #include "tdefs.h" #include "helper.h" #include // Implementacja czy_test_R int czy_test_R() { return 0; } // Implementacja sprawdz_P void sprawdz_P(u8 *Wy, u8 P, u8 O, short *lp, short iz, short io) { if (O) { *Wy = 0; *lp = 0; } else if (P) { if (*lp < iz) (*lp)++; if (*lp >= iz) *Wy = 1; } else { if (*lp > 0) (*lp)--; if (*lp == 0) *Wy = 0; } } // Implementacja sprawdz_P_100 (używana w wielu miejscach) void sprawdz_P_100(u8 *Wy, u8 P, u8 O, short *lp, short iz, short io) { sprawdz_P(Wy, P, O, lp, iz, io); } // Implementacja set_bit_ptr_struct int set_bit_ptr_struct(u32 io, struct binary_io *b) { if (!b || !b->ptr) return 0; if (io) { *b->ptr |= b->bit_mask; } else { *b->ptr &= ~b->bit_mask; } return 1; } int set_float_ptr(u32 io,void *float_ptr) { float *fptr; // fptr = (float *)(log_manager.nets_data + (io >> 3)); // if((u8 *)fptr > (log_manager.nets_data + sizeof(log_manager.nets_data) - sizeof(float))) // return -1; *(u32 *)float_ptr=(u32)fptr; return 0; } int set_pointer_in_ptr(u32 io, u32 *pointer_ptr) { u32 *f_ptr; f_ptr = (u32 *)(log_manager.nets_data + (io >> 3)); if((u8 *)f_ptr > (log_manager.nets_data+sizeof(log_manager.nets_data) - sizeof(void *))) return -1; if((u32)f_ptr == (u32)&log_manager.nets_data[0]) // if pointer connected to net '0' *(u32 *)pointer_ptr=(u32)f_ptr; else *(u32 *)pointer_ptr=(u32)*f_ptr; if(!*f_ptr) return -1; return 0; }