# -*- coding:utf-8 -*-
import os
import sys
import time
import json
from baseClient import BaseClient
import numpy as np

'''
    注意:
        所有函数中,
        
        1、参数device为整型,起始值从1开始,表示第几台设备;
        device默认为1,如果要使用第2台设备,device=2;

        2、参数timeout单位:毫秒;
'''
class C22293Manager(BaseClient):
    def __init__(self):
        BaseClient.__init__(self)  # python 继承方式  
        self.device_name = "Chroma22293" 

    def __parse__(self, result, params = 1):
        if result is None:
            return False
        
        # print result
        if params == 1:
            if result['device_cmd_result'] == u'ok;\r\n':
                return True
        
        if params == 2:
            if result['device_cmd_result'] == u'ok;\r\nok;\r\n':
                return True
        
        return False

    def setPattern(self, pattern, device = 1, timeout = 300):
        self.device_id = device
        self.device_timeout = timeout
        self.device_cmd = 'run ptn %s;\r' % pattern
        return self.__parse__(self.sendmsg())

    def setTiming(self, timing, device = 1, timeout = 300):
        self.device_id = device
        self.device_timeout = timeout
        self.device_cmd = 'run tim %s;\r' % timing
        return self.__parse__(self.sendmsg())

    def setTimingPattern(self, timing, pattern, device = 1, timeout = 300):
        self.device_id = device
        self.device_timeout = timeout
        # self.device_cmd = 'run tim %s;run ptn %s;\r' % (timing, pattern)
        # return self.__parse__(self.sendmsg(), 2)        
        if self.setTiming(timing) and self.setPattern(pattern):
            return True
        
        return False

    def getDeviceName(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'report model;\r'
        self.device_timeout = timeout
        result = self.sendmsg()
        if result is None:
            return None
        return result['device_cmd_result']

    def getDeviceSoft(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'report ver;\r'
        self.device_timeout = timeout
        result = self.sendmsg()
        if result is None:
            return None
        return result['device_cmd_result']

    def getStatus(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'dummy;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setBlueOFF(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'b off;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setBlueON(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'b on;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setGreenOFF(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'g off;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setGreenON(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'g on;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setRedOFF(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'r off;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setRedON(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'r on;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setKeyBoardLock(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'kb lock on;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

    def setKeyBoardUnLock(self, device = 1, timeout = 300):
        self.device_id = device
        self.device_cmd = 'kb lock off;\r'
        self.device_timeout = timeout
        return self.__parse__(self.sendmsg())

if __name__ == "__main__":
    while(True):
        print u'测试开始\n'
        c2 = C22293Manager()
        print c2.getDeviceName()
        print c2.getDeviceSoft()
        print c2.getStatus()

        print c2.setPattern(11)
        print c2.setTiming(11)
        print c2.setTimingPattern(11,11)

        print c2.setBlueOFF()
        print c2.setBlueON()
        
        print c2.setGreenOFF()
        print c2.setGreenON()

        print c2.setRedOFF()
        print c2.setRedON()

        print c2.setKeyBoardLock()
        print c2.setKeyBoardUnLock()

        time.sleep(2)
        print u'测试结束\n'