#! /usr/bin/python

import sys, string
import vision

class Slave:

  def __init__(self, crate, slot):
    self.crate = crate
    self.slot = slot
    self.vs = vision.open("geo32:/slot=%d"%(slot), crate)

  def __del__(self):
    vision.close(self.vs)

  def readword(self, addr):
    return vision.readword(self.vs, addr)

  def writeword(self, addr, data):
    return vision.writeword(self.vs, addr, data)

  def readwords(self, addr, n):
    d = vision.ptrcreate("int", 0, n)
    retval = None
    if vision.readwords(self.vs, addr, d, n)==0:
      retval = []
      for i in range(n):
        retval.append(vision.ptrvalue(d, i))
    vision.ptrfree(d)
    return retval

  def writewords(self, addr, data):
    d = vision.ptrcreate("int", 0, len(data))
    for i in range(len(data)):
      vision.ptrset(d, data[i], i)
    retval = vision.writewords(self.vs, addr, d, len(data))
    vision.ptrfree(d)
    return retval
