Class: OdroidLCD::HW

Inherits:
Object
  • Object
show all
Defined in:
lib/odroid_lcd/hw.rb,
ext/odroid_lcd/odroid_lcd_hw.c

Instance Method Summary collapse

Constructor Details

#initializeObject




45
46
47
48
49
50
51
52
53
54
55
56
# File 'ext/odroid_lcd/odroid_lcd_hw.c', line 45

static VALUE odlcd_init(VALUE self) {
  VALUE lcd_handle;

  // Initialize the LCD, raises a RuntimeError if we fail.
  wiringPiSetup();
  lcd_handle = rb_funcall(self, rb_intern("system_init"), 0);

  // We store the wiringPi lcdHandle in an instance variable.
  rb_iv_set(self, "@lcd_handle", lcd_handle);

  return self;
}

Instance Method Details

#clearObject




69
70
71
72
# File 'ext/odroid_lcd/odroid_lcd_hw.c', line 69

static VALUE odlcd_clear(VALUE self) {
  lcdClear(FIX2INT(rb_iv_get(self, "@lcd_handle")));
  return Qnil;
}

#max_columnObject



58
59
60
# File 'ext/odroid_lcd/odroid_lcd_hw.c', line 58

static VALUE odlcd_max_column(VALUE self) {
  return INT2FIX(LCD_COL);
}

#max_rowObject



62
63
64
# File 'ext/odroid_lcd/odroid_lcd_hw.c', line 62

static VALUE odlcd_max_row(VALUE self) {
  return INT2FIX(LCD_ROW);
}

#set_character(row, column, character) ⇒ Object




83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'ext/odroid_lcd/odroid_lcd_hw.c', line 83

static VALUE odlcd_set_character(VALUE self, VALUE row, VALUE column, VALUE character) {
  int lcdHandle;

  if (FIX2INT(row) >= LCD_ROW) {
    rb_raise(rb_eRuntimeError, "Invalid row \"%i\", should be less than %i", FIX2INT(row), LCD_ROW);
  }

  if (FIX2INT(column) >= LCD_COL) {
    rb_raise(rb_eRuntimeError, "Invalid column \"%i\", should be less than %i", FIX2INT(column), LCD_COL);
  }

  lcdHandle = FIX2INT(rb_iv_get(self, "@lcd_handle"));

  lcdPosition(lcdHandle, FIX2INT(column), FIX2INT(row));
  rb_iv_set(self, "@lcd_handle", INT2FIX(lcdHandle));

  lcdPutchar(lcdHandle, NUM2CHR(character));
  return Qnil;
}