31
31
#include "py/runtime.h"
32
32
#include "py/binary.h"
33
33
34
- // #if MICROPY_PY_BUILTINS_EVEL
35
-
36
34
//| :mod:`eveL` --- low-level BridgeTek EVE bindings
37
35
//| ================================================
38
36
//|
47
45
48
46
typedef struct _mp_obj_EVEL_t {
49
47
mp_obj_base_t base ;
50
- mp_obj_t writer ;
51
48
mp_obj_t dest [3 ];
52
-
53
49
size_t n ;
54
50
uint8_t buf [512 ];
55
51
} mp_obj_EVEL_t ;
56
52
53
+ STATIC const mp_obj_type_t EVEL_type ;
54
+
57
55
STATIC void _write (mp_obj_EVEL_t * EVEL , mp_obj_t b ) {
58
56
EVEL -> dest [2 ] = b ;
59
57
mp_call_method_n_kw (1 , 0 , EVEL -> dest );
60
58
}
61
59
62
60
STATIC mp_obj_t _register (mp_obj_t self , mp_obj_t o ) {
63
- mp_obj_EVEL_t * EVEL = self ;
61
+ mp_obj_EVEL_t * EVEL = mp_instance_cast_to_native_base ( self , & EVEL_type ) ;
64
62
EVEL -> n = 0 ;
65
- mp_printf (& mp_plat_print , "register %p %d\n" , EVEL , EVEL -> n );
66
63
mp_load_method (o , MP_QSTR_write , EVEL -> dest );
67
64
return mp_const_none ;
68
65
}
69
66
STATIC MP_DEFINE_CONST_FUN_OBJ_2 (register_obj , _register );
70
67
71
68
STATIC mp_obj_t _flush (mp_obj_t self ) {
72
- mp_obj_EVEL_t * EVEL = self ;
73
- // mp_printf(&mp_plat_print, "flush %p %d\n", EVEL, EVEL->n);
69
+ mp_obj_EVEL_t * EVEL = mp_instance_cast_to_native_base (self , & EVEL_type );
74
70
if (EVEL -> n != 0 ) {
75
71
_write (EVEL , mp_obj_new_bytearray_by_ref (EVEL -> n , EVEL -> buf ));
76
72
EVEL -> n = 0 ;
@@ -79,19 +75,19 @@ STATIC mp_obj_t _flush(mp_obj_t self) {
79
75
}
80
76
STATIC MP_DEFINE_CONST_FUN_OBJ_1 (flush_obj , _flush );
81
77
82
- STATIC void * append (mp_obj_EVEL_t * EVEL , size_t m ) {
83
- if ((EVEL -> n + m ) > sizeof (EVEL -> buf ))
84
- _flush ((mp_obj_t )EVEL );
85
- uint8_t * r = EVEL -> buf + EVEL -> n ;
86
- EVEL -> n += m ;
87
- return (void * )r ;
78
+ STATIC void * append (mp_obj_t self , size_t m ) {
79
+ mp_obj_EVEL_t * EVEL = mp_instance_cast_to_native_base (self , & EVEL_type );
80
+ if ((EVEL -> n + m ) > sizeof (EVEL -> buf ))
81
+ _flush ((mp_obj_t )EVEL );
82
+ uint8_t * r = EVEL -> buf + EVEL -> n ;
83
+ EVEL -> n += m ;
84
+ return (void * )r ;
88
85
}
89
86
90
87
STATIC mp_obj_t _cc (mp_obj_t self , mp_obj_t b ) {
91
- mp_obj_EVEL_t * EVEL = self ;
88
+ mp_obj_EVEL_t * EVEL = mp_instance_cast_to_native_base ( self , & EVEL_type ) ;
92
89
mp_buffer_info_t buffer_info ;
93
90
mp_get_buffer_raise (b , & buffer_info , MP_BUFFER_READ );
94
- // mp_printf(&mp_plat_print, "flush %p %d %p\n", EVEL, buffer_info.len, EVEL->writer);
95
91
if (buffer_info .len <= sizeof (EVEL -> buf )) {
96
92
uint8_t * p = (uint8_t * )append (EVEL , buffer_info .len );
97
93
// memcpy(p, buffer_info.buf, buffer_info.len);
@@ -152,7 +148,6 @@ STATIC mp_obj_t _cmd(size_t n_args, const mp_obj_t *args) {
152
148
break ;
153
149
}
154
150
}
155
- mp_printf (& mp_plat_print , "n=%d\n" , n );
156
151
157
152
uint32_t * p = (uint32_t * )append (self , sizeof (uint32_t ) * (1 + n ));
158
153
* p ++ = 0xffffff00 | mp_obj_get_int_truncated (num );
@@ -164,7 +159,6 @@ STATIC mp_obj_t _cmd(size_t n_args, const mp_obj_t *args) {
164
159
case 'I' :
165
160
case 'i' :
166
161
* p ++ = mp_obj_get_int_truncated (* a ++ );
167
- mp_printf (& mp_plat_print , " %d %08x\n" , p [-1 ]);
168
162
i += 1 ;
169
163
break ;
170
164
case 'H' :
@@ -201,17 +195,11 @@ STATIC void EVEL_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_
201
195
STATIC mp_obj_t EVEL_make_new (const mp_obj_type_t * type , size_t n_args , const mp_obj_t * args , mp_map_t * kw_args ) {
202
196
// mp_arg_check_num(n_args, kw_args, 1, 1, false);
203
197
mp_obj_EVEL_t * o = m_new_obj (mp_obj_EVEL_t );
204
- mp_printf (& mp_plat_print , "EVEL init \n" );
205
- o -> base .type = type ;
206
- return o ;
198
+ mp_printf (& mp_plat_print , "EVEL %p make_new \n" , o );
199
+ o -> base .type = & EVEL_type ;
200
+ return MP_OBJ_FROM_PTR ( o ) ;
207
201
}
208
202
209
- // STATIC void EVEL_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
210
- // printf("HERE\n");
211
- // mp_type_type.attr(self_in, attr, dest);
212
- // printf("THERE %p %p\n", dest[0], dest[1]);
213
- // }
214
-
215
203
STATIC const mp_obj_type_t EVEL_type = {
216
204
{ & mp_type_type },
217
205
// Save on qstr's, reuse same as for module
@@ -233,5 +221,3 @@ const mp_obj_module_t eveL_module = {
233
221
.base = { & mp_type_module },
234
222
.globals = (mp_obj_dict_t * )& mp_module_eveL_globals ,
235
223
};
236
-
237
- // #endif // MICROPY_PY_BUILTINS_EVEL
0 commit comments