示例#1
0
void pifacefinalise()
{
	if (pfd) {
		pfio_deinit();
		pfd = 0;
	}
}
示例#2
0
文件: plotd.c 项目: am1337/plotd
void sigfunc(int sig)
{
  if(sig != SIGINT)
    return;
  else
  {
    if (cancel == 0)
    {
      cancel = 1;
      printf("press ctrl+c again to pause program\n");
    }
    else if (cancel == 1)
    {
      cancel = 2;
      int laser=laserOn;
      setLaser(POW_OFF);
      printf("press 'e' to end program\n");
      printf("press any other key to resume program\n");
      int input = getInputChar();
      if (input=='e')
	exit (0);
      setLaser(laser);
      cancel=0;
    }
    else
    {
      printf("Thanks for flying plotd\n");
      setLaser(POW_OFF);
      pfio_write_output(0x00);
      pfio_deinit();
      exit (0);
    }
  }
}
示例#3
0
int main(void)
{
    if (pfio_init() < 0)
        exit(-1);

    while (1)
    {
        printf("Input port: 0x%x\n", pfio_read_input());
        sleep(1);
    }

    pfio_deinit();
    return 0;
}
示例#4
0
文件: plotd.c 项目: am1337/plotd
int main(void)
{
  // init IOs
  signal(SIGINT,sigfunc);
  if (pfio_init() < 0)
    exit(-1);
  
  // init PWM
  if (wiringPiSetup () == -1)
    exit (1);
  pinMode (1, PWM_OUTPUT);
  laserPower = POW_MED;
  
  setZero(JUMP);
  
  printf("plotd: daemon ready\n");
  manualControl();
  
  pfio_write_output(0x00);
  pfio_deinit();
  return 0;
}
void RobotApp(int argc, char *argv[])
{
    pfio_init();

    while (1)
    {
        pfio_digital_write(LIGHT1, RED);
        pfio_digital_write(LIGHT2, RED);
        _delay_ms(SWITCH_TIME);
        pfio_digital_write(LIGHT1, RED);
        pfio_digital_write(LIGHT2, GREEN);
        _delay_ms(CYCLE_TIME);
        pfio_digital_write(LIGHT1, RED);
        pfio_digital_write(LIGHT2, RED);
        _delay_ms(SWITCH_TIME);
        pfio_digital_write(LIGHT1, GREEN);
        pfio_digital_write(LIGHT2, RED);
        _delay_ms(CYCLE_TIME);
    }

    pfio_deinit();
    printf ("Ready.\n");
}
示例#6
0
int main(void)
{
    if (pfio_init() < 0) perror("Cannot start PFIO");

    long int code = 0, last = 0;
    int count = 0;
    bool last_d0 = 0, last_d1 = 0;
    
    read_config();
    
    if(signal(SIGHUP, signal_handler) == SIG_ERR) perror("Cannot handle signal SIGHUP.");
    if(signal(SIGUSR1, signal_handler) == SIG_ERR) perror("Cannot handle signal SIGUSR1.");
    if(signal(SIGINT, signal_handler) == SIG_ERR) perror("Cannot handle signal SIGINT.");

		beep(1000);

#if DEBUG
    printf("Ready!\n");
#endif

    while (1)
    {
      int i = pfio_read_input();
			if(i == 0xFF) usleep(1);

			struct timeval tv;
      gettimeofday(&tv, NULL);
      long int now = tv.tv_usec + tv.tv_sec*1000;

      if((now - last > TIMEOUT)||(now<last)) {
#if DEBUG
        printf(" - ");
#endif
        count = 0;
        code = 0;
      }

      bool d0 = (i & MASK_D0)==0;
      bool d1 = (i & MASK_D1)==0;
      bool button = (i & MASK_EXIT)==0;
      bool lockcmd = (i & MASK_LOCK)==0;
      
      if(lockcmd || locked) {
#if DEBUG
	        printf("*** LOCK ***\n");
#endif
      		while(((pfio_read_input() & MASK_LOCK)==0)||locked) {
						pfio_digital_write(PIN_GLED,1);
		        usleep(200000);
						pfio_digital_write(PIN_GLED,0);
		        usleep(200000);
          }
#if DEBUG
	        printf("*** UNLOCK ***\n");
#endif
      }
      
      if(button) {
					#if DEBUG
							printf("Exit button pressed!!!\n");
					#endif
		      open_door_start();
          beep(100);
          while((pfio_read_input() & MASK_EXIT)==0) sleep(1);
					#if DEBUG
							printf("Exit button released!!!\n");
					#endif
          sleep(DOOR_DELAY);
          open_door_stop();
      }
      
			if(d0 && !last_d0) {
#if DEBUG
        printf("0");
#endif
        code = code << 1;
        count++;
      }
			if(d1 && !last_d1) {
#if DEBUG
        printf("1");
#endif
        code = (code << 1) + 1;
        count++;
      }

      if(count==BITSCOUNT) {
#if DEBUG
        printf("[%li]\n",code);
#endif

				struct card * c = cards;
				bool allowed = 0;
				while(c) {
					if(c->code == code) {
						allowed = 1;
						break;
					}
					c = c->next;
				};

        if(allowed) {
            // Accepte
#if DEBUG
          printf("Access authorized!\n");
#endif
          open_door(0);
#if DEBUG
          printf("OK\n");
#endif

        } else {
            // Refuse
#if DEBUG
          printf("Access denied!\n");
#endif
          int n;
          for(n=0; n<3; n++) {
            usleep(200000);
            beep(100);
          }
#if DEBUG
          printf("OK\n");
#endif
        }

        code = 0;
        count = 0;
      }

#if DEBUG
			fflush(stdout);
#endif

			last_d0 = d0;
			last_d1 = d1;
			last = now;
		}

    pfio_deinit();
    return 0;
}