15
15
#ifdef CONFIG_EVM_LCD
16
16
17
17
#include "evm_module.h"
18
+ #include <drivers/display.h>
19
+
20
+
21
+ uint16_t evm_lcd_color = 0 ;
18
22
19
23
//LCD()
20
24
static evm_val_t evm_module_lcd (evm_t * e , evm_val_t * p , int argc , evm_val_t * v )
@@ -23,6 +27,12 @@ static evm_val_t evm_module_lcd(evm_t *e, evm_val_t *p, int argc, evm_val_t *v)
23
27
EVM_UNUSED (p );
24
28
EVM_UNUSED (argc );
25
29
EVM_UNUSED (v );
30
+ const char * name = evm_2_string (v );
31
+ struct device * dev = device_get_binding (name );
32
+ if (dev == NULL ) {
33
+ evm_set_err (evm_runtime , ec_type , "Driver is not found" );
34
+ }
35
+ evm_object_set_ext_data (p , (intptr_t )dev );
26
36
return EVM_VAL_UNDEFINED ;
27
37
}
28
38
@@ -32,6 +42,8 @@ static evm_val_t evm_module_lcd_on(evm_t *e, evm_val_t *p, int argc, evm_val_t *
32
42
EVM_UNUSED (p );
33
43
EVM_UNUSED (argc );
34
44
EVM_UNUSED (v );
45
+ struct device * dev = (struct device * )evm_object_get_ext_data (p );
46
+ display_blanking_off (dev );
35
47
return EVM_VAL_UNDEFINED ;
36
48
}
37
49
@@ -41,6 +53,8 @@ static evm_val_t evm_module_lcd_off(evm_t *e, evm_val_t *p, int argc, evm_val_t
41
53
EVM_UNUSED (p );
42
54
EVM_UNUSED (argc );
43
55
EVM_UNUSED (v );
56
+ struct device * dev = (struct device * )evm_object_get_ext_data (p );
57
+ display_blanking_on (dev );
44
58
return EVM_VAL_UNDEFINED ;
45
59
}
46
60
@@ -51,6 +65,16 @@ static evm_val_t evm_module_lcd_set_pixel(evm_t *e, evm_val_t *p, int argc, evm_
51
65
EVM_UNUSED (p );
52
66
EVM_UNUSED (argc );
53
67
EVM_UNUSED (v );
68
+ struct device * dev = (struct device * )evm_object_get_ext_data (p );
69
+ struct display_buffer_descriptor buf_desc ;
70
+ buf_desc .buf_size = 2 ;
71
+ buf_desc .pitch = 1 ;
72
+ buf_desc .width = 1 ;
73
+ buf_desc .height = 1 ;
74
+
75
+ int x = evm_2_integer (v );
76
+ int y = evm_2_integer (v + 1 );
77
+ display_write (dev , x , y , & buf_desc , & evm_lcd_color );
54
78
return EVM_VAL_UNDEFINED ;
55
79
}
56
80
//color = LCD.get_pixel(x, y)
0 commit comments