Gps::Gps(): Phidget(), gps_handle_(0) { // create the handle CPhidgetGPS_create(&gps_handle_); // pass handle to base class Phidget::init((CPhidgetHandle)gps_handle_); // register base class callbacks Phidget::registerHandlers(); // Register Gps Handlers registerGpsHandlers(); return; }
VALUE gps_initialize(VALUE self, VALUE serial) { PhidgetInfo *info = device_info(self); GpsInfo *gps_info = ALLOC(GpsInfo); memset(gps_info, 0, sizeof(GpsInfo)); gps_info->sample_rate = sample_create(); CPhidgetGPSHandle gps = 0; ensure(CPhidgetGPS_create(&gps)); ensure(CPhidgetGPS_set_OnPositionChange_Handler( gps, gps_on_position_change, info)); ensure(CPhidgetGPS_set_OnPositionFixStatusChange_Handler(gps, gps_on_fix_change, info)); info->handle = (CPhidgetHandle)gps; info->on_type_detach = gps_on_detach; info->on_type_free = gps_on_free; info->type_info = gps_info; return rb_call_super(1, &serial); }