void bitsetVar::setVar(const char *s) { uint32 idx, val; if (!get_expression(&s, &idx) || !get_expression(&s, &val)) { ScriptError("Expected <index> <value>"); return; } if (idx > maxavail) { ScriptError("Index out of range (0..%d)", maxavail); return; } ASSIGNBIT(data, idx, val); }
extern u8 DIO_u8WritePinVal(u8 Copy_u8PinIdx, u8 Copy_u8PinVal) { u8 local_u8Error; u8 local_u8Portno = Copy_u8PinIdx / PIN_PER_PORT; u8 local_u8Pinno = Copy_u8PinIdx % PIN_PER_PORT; if(Copy_u8PinIdx >NO_PINS) { local_u8Error = DIO_u8ERROR; } else { local_u8Error = DIO_u8OK; *DIO_u8PORTArr[local_u8Portno]=ASSIGNBIT(*DIO_u8PORTArr[local_u8Portno],Copy_u8PinVal,local_u8Pinno); } return local_u8Error; }
static void EvdevRead (int evdevPort, void *closure) { KdMouseInfo *mi = closure; Kevdev *ke = mi->driver; int i, n; struct input_event events[NUM_EVENTS]; n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event)); if (n <= 0) return; n /= sizeof (struct input_event); for (i = 0; i < n; i++) { switch (events[i].type) { case EV_SYN: break; case EV_KEY: EvdevMotion (mi); ASSIGNBIT(ke->key,events[i].code, events[i].value); if (events[i].code < 0x100) ErrorF ("key %d %d\n", events[i].code, events[i].value); else ErrorF ("key 0x%x %d\n", events[i].code, events[i].value); if (events[i].value==1) { switch (events[i].code) { case BTN_LEFT: flags |= KD_BUTTON_1; break; case BTN_RIGHT: flags |= KD_BUTTON_3; break; case BTN_MIDDLE: flags |= KD_BUTTON_2; break; case BTN_FORWARD: flags |= KD_BUTTON_4; break; case BTN_BACK: flags |= KD_BUTTON_5; break; } } else if (events[i].value==0) { switch (events[i].code) { case BTN_LEFT: flags &= ~KD_BUTTON_1; break; case BTN_RIGHT: flags &= ~KD_BUTTON_3; break; case BTN_MIDDLE: flags &= ~KD_BUTTON_2; break; case BTN_FORWARD: flags &= ~KD_BUTTON_4; break; case BTN_BACK: flags &= ~KD_BUTTON_5; break; } } KdEnqueueMouseEvent (mi, KD_MOUSE_DELTA | flags, 0, 0); break; case EV_REL: ke->rel[events[i].code] += events[i].value; break; case EV_ABS: ke->abs[events[i].code] = events[i].value; break; } } EvdevMotion (mi); }