Refactor to use new protocol module and sipo.
[bertos.git] / bertos / drv / phase.c
index d6c0c73e7345ef7b6a8ec585cff1e9b5efbf2824..275b133db80f27328782bb5be6405bd672d84566 100644 (file)
@@ -31,7 +31,6 @@
  *
  * \brief Phase control driver (implementation)
  *
- * \version $Id$
  *
  * \author Francesco Sacchi <batt@develer.com>
  */
@@ -50,9 +49,6 @@
 
 #include <math.h>
 
-#warning TODO:Generalize this moduele for all target supported.
-
-#if 0
 /** Array  of triacs */
 static Triac triacs[TRIAC_CNT];
 
@@ -77,10 +73,10 @@ DEFINE_ZEROCROSS_ISR()
        for (dev = 0; dev < TRIAC_CNT; dev++)
        {
                /* Only turn off triac if duty is != 100% */
-               if (triacs[dev].duty != TRIAC_MAX_DUTY)
+               if (triacs[dev].duty != CONFIG_TRIAC_MAX_DUTY)
                        TRIAC_OFF(dev);
                /* Compute delay from duty */
-               timer_setDelay(&triacs[dev].timer, DIV_ROUND(period * (TRIAC_MAX_DUTY - triacs[dev].duty), TRIAC_MAX_DUTY));
+               timer_setDelay(&triacs[dev].timer, DIV_ROUND(period * (CONFIG_TRIAC_MAX_DUTY - triacs[dev].duty), CONFIG_TRIAC_MAX_DUTY));
 
                /* This check avoids inserting the same timer twice
                 * in case of an intempestive zerocross or spike */
@@ -118,7 +114,7 @@ void phase_setDuty(TriacDev dev, triac_duty_t duty)
  */
 void phase_setDutyUnlock(TriacDev dev, triac_duty_t duty)
 {
-       triacs[dev].duty = MIN(duty, (triac_duty_t)TRIAC_MAX_DUTY);
+       triacs[dev].duty = MIN(duty, (triac_duty_t)CONFIG_TRIAC_MAX_DUTY);
 }
 
 
@@ -134,18 +130,18 @@ void phase_setPower(TriacDev dev, triac_power_t power)
        bool greater_fifty = false;
        triac_duty_t duty;
 
-       power = MIN(power, (triac_power_t)TRIAC_MAX_POWER);
+       power = MIN(power, (triac_power_t)CONFIG_TRIAC_MAX_POWER);
 
-       if (power > TRIAC_MAX_POWER / 2)
+       if (power > CONFIG_TRIAC_MAX_POWER / 2)
        {
                greater_fifty = true;
-               power = TRIAC_MAX_POWER - power;
+               power = CONFIG_TRIAC_MAX_POWER - power;
        }
 
        duty = TRIAC_POWER_K * sqrt(power);
 
        if (greater_fifty)
-               duty = TRIAC_MAX_DUTY - duty;
+               duty = CONFIG_TRIAC_MAX_DUTY - duty;
        phase_setDuty(dev, duty);
 }
 
@@ -183,7 +179,7 @@ void phase_init(void)
                triacs[dev].running = false;
                SET_TRIAC_DDR(dev);
                TRIAC_OFF(dev);
-               timer_set_event_softint(&triacs[dev].timer, (Hook)phase_softint, (void *)dev);
+               timer_setSoftint(&triacs[dev].timer, (Hook)phase_softint, (void *)dev);
        }
        IRQ_SAVE_DISABLE(flags);
 
@@ -192,5 +188,4 @@ void phase_init(void)
        DB(phase_initialized = true;)
        IRQ_RESTORE(flags);
 }
-#endif