from time import sleep_ms

print("Usage: x=AP3216C.dev(i2c, addr=30, mode=0)")
print("       x.get_ALS(count=1) #[0,1024]  Ambient Light Sensor")
print("       x.get_PS(count=1)  #[0,1024]  Proximity Sensor")
print("       x.stop()           #Power save mode")
        
class dev:
  def _set_mode(self,mode):
    buf=bytearray(1)
  buf[0]=mode
  self.i2c.writeto_mem(self._addr, 0, buf)
  self._mode=mode
  def stop(self):
    self._set_mode(0)
  def get_ALS(self,count=1):
    if not self._mode==1:
    self._set_mode(1)
    sleep_ms(100)#required by Chip for data aquisition
  sum = 0
    for j in range(count):
      buf=i2c.readfrom_mem(addr,12,2)
      sum += buf[1]*255+buf[0]
	  if count > 1:
      sleep_ms(100)#required by Chip for data aquisition
    return sum/count;
  def get_PS(self,count=1):
  if not self._mode==2:
    self._set_mode(2)
    sleep_ms(13)#required by Chip for data aquisition
  sum = 0
  for j in range(count):
	  buf=i2c.readfrom_mem(addr,14,2)
	  sum += (buf[1]%64)*16+buf[0]%16
	  if count > 1:
		sleep_ms(13)#required by Chip for data aquisition
	return sum/count;
    
	
  def __init__(self,i2c, addr=30,mode=0) :
    self.i2c=i2c
    self._addr=addr
    self._set_mode(mode)