All pastes #2589538 Raw Edit

Someone

public unlisted text v1 · immutable
#2589538 ·published 2014-01-27 00:31 UTC
rendered paste body
#!/usr/bin/env python

import hal_glib                           
import hal                                
from gladevcp.persistence import IniFile  

class PWMClass:

    def __init__(self,halcomp,builder,useropts):
        self.builder = builder
        self.halcomp = halcomp
        self.defaults = { IniFile.vars : {"laser_milliseconds"   : 166}}

        self.ini_filename = __name__ + ".var"
        self.ini = IniFile(self.ini_filename,self.defaults,self.builder)
        self.ini.restore_state(self)

        self.laser_hertz_value = hal_glib.GPin(halcomp.newpin("laser_hertz_value", hal.HAL_U32, hal.HAL_OUT))

        # self.halcomp["laser_hertz_value"] = self.calc_hertz()

        self.btn1 = self.builder.get_object("period_50")
        self.btn1.connect("pressed", self.on_btn50_pressed)

        self.btn2 = self.builder.get_object("period_100")
        self.btn2.connect("pressed", self.on_btn100_pressed)

        self.btn2 = self.builder.get_object("period_250")
        self.btn2.connect("pressed", self.on_btn250_pressed)

        self.btn2 = self.builder.get_object("period_500")
        self.btn2.connect("pressed", self.on_btn500_pressed)

        self.btn2 = self.builder.get_object("period_700")
        self.btn2.connect("pressed", self.on_btn700_pressed)

        self.btn2 = self.builder.get_object("period_900")
        self.btn2.connect("pressed", self.on_btn900_pressed)

    def calc_hertz(self):
        if (self.laser_milliseconds < 20):
            self.laser_milliseconds = 20
        if (self.laser_milliseconds > 950):
            self.laser_milliseconds = 950
        return(1000000 / self.laser_milliseconds)

    def on_btn50_pressed(self, pin, data = None):
        # this code breaks....
        print self.halcomp["hm2_5i20.0.pwmgen.pwm_frequency"]
        # it throws this error:
        # Traceback (most recent call last):
        # File "./pwm_tab.py", line 49, in on_btn50_pressed
        # print self.halcomp["hm2_5i20.0.pwmgen.pwm_frequency"]
        # AttributeError: Pin 'hm2_5i20.0.pwmgen.pwm_frequency' does not exist

        self.laser_milliseconds = 50
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_btn100_pressed(self, pin, data = None):
        self.laser_milliseconds = 100
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_btn250_pressed(self, pin, data = None):
        self.laser_milliseconds = 250
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_btn500_pressed(self, pin, data = None):
        self.laser_milliseconds = 500
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_btn700_pressed(self, pin, data = None):
        self.laser_milliseconds = 700
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_btn900_pressed(self, pin, data = None):
        self.laser_milliseconds = 900
        self.halcomp["laser_hertz_value"] = self.calc_hertz()
        print self.halcomp["laser_hertz_value"]

    def on_unix_signal(self,signum,stack_frame):
        print "on_unix_signal(): signal %d received, saving state" % (signum)
        self.ini.save_state(self)

def get_handlers(halcomp,builder,useropts):
    return(PWMClass(halcomp,builder,useropts))