Example #1
0
  /**
   * This method can be run from a global menu context, using the global Keyboard and Display
   * objects.
   */
  public void run() {
    running = true;
    int hours, minutes, seconds;
    {
      Time time = new Time();
      hours = time.hour;
      minutes = time.minute;
      seconds = time.second;
    }

    Deadline dl = new Deadline(1000);
    synchronized (dl) {
      int count = 0;
      Buzzer b = null;
      do {
        clock.setValue(hours, minutes, seconds);
        try {
          if (alarm && count < 20) {
            if (b == null) b = new Buzzer();
            for (int i = 0; i < 4; i++) {
              b.on((short) 880);
              ThreadExt.sleep(120);
              b.off();
              ThreadExt.sleep(30);
            }
            count++;
          }
        } catch (InterruptedException e) {
          count = 20;
        }
        seconds++;
        if (seconds >= 60) {
          seconds -= 60;
          minutes++;
          if (minutes >= 60) {
            minutes -= 60;
            hours++;
            if (hours >= 24) hours -= 24;
          }
          if (RTC.isAlarm()) abort = true;
        }
        if (!abort)
          try {
            dl.append(1000);
          } catch (DeadlineMissException e) {
          }
      } while (!abort);
    }
    running = false;
  }
    public void run() {
      timeRequesterReady = false; // flag to indicate if the thread is running
      for (; !modify; ) {
        Time t = new Time(); // the current time

        // update labels if necessary
        if (years != t.year) {
          years = t.year;
          year.setLabel(String.valueOf(years), false);
        }
        if (months != t.month) {
          months = t.month;
          month.setLabel(
              (months < 10 ? "0" : "").concat(String.valueOf(months)).concat("."), false);
        }
        if (days != t.day) {
          days = t.day;
          day.setLabel((days < 10 ? "0" : "").concat(String.valueOf(days)).concat("."), false);
        }

        // update clock
        clock.setValue(t.hour, t.minute, t.second);
        if (!modify) {
          try {
            ThreadExt.sleep(200);
          } catch (InterruptedException e) {
          }
        }
      }
      timeRequesterReady = true; // thread runs out
    }
  public I2CDemo() {
    // create the left Diagram
    add(new Border("Temp.", 0, 0, 40, 64));
    add(new Border("Light", 42, 0, 86, 64));
    Thermometer thermometer = new Thermometer(3, 10, 35, 50, -100, 500);
    thermometer.setCaption("-10", "+50");
    thermometer.setNumericDisplay(3, 1, "°C");
    thermometer.setValue(0);
    add(thermometer);

    AnalogMeter luxmeter =
        new AnalogMeter(57, 5, 50, 50, 0, 1000, 130, AnalogMeter.ORIENTATION_CENTER, 20);
    luxmeter.setCaption("Dark", "Bright");
    luxmeter.setNumericDisplay(5, 0, "");
    luxmeter.setValue(0);
    add(luxmeter);

    add(new Label("lux", 77, 56, Label.ALIGN_CENTER));
    // show the frame
    show();

    // create sensor instances
    LM75 lm75 = new LM75(0x9e);
    TSL2550 tsl2550 = null;
    try {
      tsl2550 = new TSL2550(0x72);
      // tsl2550.setExtendedRange(true);
    } catch (IOException e2) {
      add(new Label("No TSL2550 found!", 45, 25, 80, 10, Label.ALIGN_CENTER));
    }
    for (; ; ) {
      if (lm75 != null) {
        try {
          thermometer.setValue(lm75.getTemp());
        } catch (IOException e1) {
          add(new Label("No LM75 found!", 0, 25, 60, 10, Label.ALIGN_CENTER));
          lm75 = null;
        }
      }
      if (tsl2550 != null) {
        try {
          int lux = tsl2550.getIllumination();
          if (lux > 0) {
            luxmeter.setValue(lux);
          }
        } catch (IOException e) {
        }
      }
      // sleep
      try {
        ThreadExt.sleep(500);
      } catch (InterruptedException e) {
      }
    }
  }
  public LightTemperatureIntro() {
    try {
      RS232 rs232 = new RS232();
      rs232.println("Welcome!");
      rs232.println("Please connect one or both of the");
      rs232.println("sensors that came with your evaluation kit");
      rs232.println("to the evaluation board's I2C connectors");

      TMP75 tmp = null;
      TSL2561 tsl = null;

      intro:
      for (; ; ) {
        if (tmp == null) {
          tmp = new TMP75(0x9e);
        }
        if (tmp != null) {
          try {
            tmp.getTemp();
          } catch (IOException e1) {
            tmp = null;
          }
        }
        if (tsl == null) {
          try {
            tsl = new TSL2561(0x72);
          } catch (IOException e2) {
          }
        }
        if (tsl != null) {
          try {
            tsl.getChannel0();
          } catch (IOException e) {
            tsl = null;
          }
        }

        if (tmp != null || tsl != null) {
          break intro;
        }

        try {
          ThreadExt.sleep(1);
        } catch (InterruptedException e) {
        }
      }
      if (tmp != null) {
        rs232.println("TMP75 detected.");
      }
      if (tsl != null) {
        rs232.println("TSL2651 detected.");
      }
    } catch (IOException e) {
    }
  }
 /** Run method is used for acoustic signals and reboot after 10s */
 public void run() {
   // generate acoustic error signal if property is enabled
   if ("true".equals(Management.getProperty("buzzer.systembeep"))) {
     // we use PWM to bypass the property "buzzer.enable"
     PWM.setFrequency(400);
     PWM.setDuty(Buzzer.BUZZERCHANNEL, 128);
     PWM.setActive(Buzzer.BUZZERCHANNEL, true);
     try {
       ThreadExt.sleep(500);
       PWM.setFrequency(200);
       ThreadExt.sleep(250);
     } catch (InterruptedException e) {
     }
     PWM.setActive(Buzzer.BUZZERCHANNEL, false);
   }
   try {
     // wait for 10 sek.
     ThreadExt.sleep(10000);
     // reboot device
     Management.reboot(true);
   } catch (InterruptedException e) {
   }
 }
  /** The time modify page. */
  void modifyMenu() {
    modify = true; // stop the time request thread
    if (timeRequester != null) {
      while (!timeRequesterReady) {
        try {
          ThreadExt.sleep(100);
        } catch (InterruptedException ex) {
        }
      }
      timeRequester = null;
    }
    mainContainer.removeAll(); // remove all components
    graphics.clearRect(0, 0, 128, 64); // clear screen
    day = null; // delete all components for the garbage collector
    month = null;
    year = null;
    clock = null;
    changeButton = null;
    mainContainer.add(new Border("Datum/Uhrzeit stellen", 0, 0, 128, 64)); // border
    okButton = new Button("Ok", 2, 51, 40, 11); // ok button
    okButton.setActionListener(this);
    mainContainer.add(okButton);

    cancelButton = new Button("Abbrechen", 44, 51, 40, 11); // cancel button
    cancelButton.setActionListener(this);
    mainContainer.add(cancelButton);

    // initialize all number choosers with the current time
    Time t = new Time();
    dayChange = new NumberChooser(10, 10, 1, 31); // day
    dayChange.setValue(t.day);
    mainContainer.add(dayChange);
    dayChange.setActionListener(this);

    monthChange = new NumberChooser(40, 10, 1, 12); // month
    monthChange.setValue(t.month);
    mainContainer.add(monthChange);
    monthChange.setActionListener(this);

    yearChange = new NumberChooser(70, 10, 2003, 2099); // year
    yearChange.setValue(t.year);
    mainContainer.add(yearChange);
    yearChange.setActionListener(this);

    hourChange = new NumberChooser(10, 25, 0, 23); // hours
    hourChange.setValue(t.hour);
    mainContainer.add(hourChange);
    hourChange.setActionListener(this);

    minuteChange = new NumberChooser(40, 25, 0, 59); // minutes
    minuteChange.setValue(t.minute);
    mainContainer.add(minuteChange);
    minuteChange.setActionListener(this);

    secondChange = new NumberChooser(70, 25, 0, 59); // seconds
    secondChange.setValue(t.second);
    mainContainer.add(secondChange);
    secondChange.setActionListener(this);

    okButton.requestFocus();
  }
  /**
   * Program entry point. Displays the clock an main menu.
   *
   * @param args (not used)
   */
  public static void main(String[] args) {
    // lights on!
    jcontrol.io.Backlight.setBrightness(jcontrol.io.Backlight.MAX_BRIGHTNESS);

    lcd = new Display();
    key = new Keyboard();
    lcd.setFont(null);
    {
      String d = Management.getProperty("system.standbytimer");
      if (d != null) Management.powerOff(Integer.parseInt(d)); // get power off delay
    }
    int select = 0;
    Clock clk;
    for (; ; ) { // main loop
      lcd.clearDisplay();
      if (RTC.isAlarm()) {
        Time wakeup = new Time();
        RTC.getAlarm(wakeup);
        RTC.resetAlarm();
        Date alarmDate = Date.getNextDate(wakeup);
        if (alarmDate != null) {
          lcd.drawString(time2string(alarmDate.time), 0, 45);
          lcd.drawString("$".equals(alarmDate.text) ? "no subject" : alarmDate.text, 0, 56);
          updateAlarm(alarmDate.time);
        }
        clk = new Clock(45, 0, 40, 40, lcd, true); // show the alarm clock
      } else {
        clk = new Clock(35, 2, 60, 80, lcd, false); // show the normal clock
      }
      while (clk.isRunning()) {
        try {
          ThreadExt.sleep(500);
        } catch (InterruptedException e) {
          clk.stop();
        }
        if (key.getKey() != 0) clk.stop();
      }
      if (RTC.isAlarm()) continue; // begin from above...
      key:
      for (; ; ) { // the menu loop
        try {
          lcd.drawImage(new Resource("organizer.jcif"), 0, 0); // draw the background image
        } catch (java.io.IOException e) {
        }
        lcd.setFont(null);
        select =
            MenuSelector.listSelect(
                new String[] { // let the user select one of the specified menu items
                  "display time", "new appointment", "view appointments", "turn off"
                },
                select,
                lcd,
                key);
        Date date = null;
        switch (select) {
          case -1:
          case 0: // show the current time
            select = 0;
            break key;
          case 2: // adjust appointment
            date = listDates(); // show all stored dates and return date to change
            if (date == null) break;
          case 1: // new appointment
            date =
                DateInput.getDate(
                    lcd, key,
                    date); // get a new date (date==null) or modify an existing (date!=null)
            if (date != null) { // if the new date is valid
              try {
                date.store();
              } catch (IOException e) {
              }
              date = null; // this object may be garbage collected now
              updateAlarm(null);
            }
            break;
          case 3: // standby
            lcd.clearDisplay();
            while (key.getKey() != 0) {}
            jcontrol.system.Management.powerOff(-1);
            break;
        }
      }
    }
  }