view light8/parport.c @ 167:79bc84310e80

changes from tonight's rehearsal: changes from tonight's rehearsal: - CueFader is closer to actually running the show, computes DMX levels to send. - KeyboardComposer is not a dummy. Use DMXDUMMY=1 to disable it. - Submaster: subs can now be "temporary" -- i.e. they shouldn't be saved or loaded. to save a temporary sub, make a copy of it with a proper name since the computed name will be ugly. Also, get_normalized_copy() and crossfade() methods added. linear_fade helper (shouldn't be in Submaster, probably) added too. - dmxchanedit: longer labels - cuelist1 now has some bogus data in it and some crap removed - dmxclient: now listens to the $DMXHOST and $DMXDUMMY env variables. - patchdata: now up to date with this year's show - danshow subs song{01..19}: removed. maybe we'll re-add them in an archive directory.
author dmcc
date Tue, 08 Jul 2003 16:19:55 +0000
parents f0e27aa8f0f5
children
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <asm/io.h>
#include <fcntl.h>
#include <Python.h>

int getparport() {
    if( ioperm(888,3,1) ) {
      printf("Couldn't get parallel port at 888-890\n");

      // the following doesn't have any effect!
      PyErr_SetString(PyExc_IOError,"Couldn't get parallel port at 888-890");
      return 0;
    } 
    return 1;
}

void outdata(unsigned char val) {
  outb(val,888);
}

void outcontrol( unsigned char val ) {
  outb(val,890);
}

void outbyte( unsigned char val ) {
  // set data, raise clock, lower clock
  outdata(val);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(2);
  outcontrol(3);
}
void outstart() {
  // send start code: pin 14 high, 5ms to let a dmx cycle finish,
  // then pin14 low (pin1 stays low)
  outcontrol(1);
  usleep(5000);
  outcontrol(3);
}