3131#include "py/runtime.h"
3232#include "py/binary.h"
3333
34- // #if MICROPY_PY_BUILTINS_EVEL
35-
3634//| :mod:`eveL` --- low-level BridgeTek EVE bindings
3735//| ================================================
3836//|
4745
4846typedef struct _mp_obj_EVEL_t {
4947 mp_obj_base_t base ;
50- mp_obj_t writer ;
5148 mp_obj_t dest [3 ];
52-
5349 size_t n ;
5450 uint8_t buf [512 ];
5551} mp_obj_EVEL_t ;
5652
53+ STATIC const mp_obj_type_t EVEL_type ;
54+
5755STATIC void _write (mp_obj_EVEL_t * EVEL , mp_obj_t b ) {
5856 EVEL -> dest [2 ] = b ;
5957 mp_call_method_n_kw (1 , 0 , EVEL -> dest );
6058}
6159
6260STATIC 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 ) ;
6462 EVEL -> n = 0 ;
65- mp_printf (& mp_plat_print , "register %p %d\n" , EVEL , EVEL -> n );
6663 mp_load_method (o , MP_QSTR_write , EVEL -> dest );
6764 return mp_const_none ;
6865}
6966STATIC MP_DEFINE_CONST_FUN_OBJ_2 (register_obj , _register );
7067
7168STATIC 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 );
7470 if (EVEL -> n != 0 ) {
7571 _write (EVEL , mp_obj_new_bytearray_by_ref (EVEL -> n , EVEL -> buf ));
7672 EVEL -> n = 0 ;
@@ -79,19 +75,19 @@ STATIC mp_obj_t _flush(mp_obj_t self) {
7975}
8076STATIC MP_DEFINE_CONST_FUN_OBJ_1 (flush_obj , _flush );
8177
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 ;
8885}
8986
9087STATIC 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 ) ;
9289 mp_buffer_info_t buffer_info ;
9390 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);
9591 if (buffer_info .len <= sizeof (EVEL -> buf )) {
9692 uint8_t * p = (uint8_t * )append (EVEL , buffer_info .len );
9793 // 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) {
152148 break ;
153149 }
154150 }
155- mp_printf (& mp_plat_print , "n=%d\n" , n );
156151
157152 uint32_t * p = (uint32_t * )append (self , sizeof (uint32_t ) * (1 + n ));
158153 * 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) {
164159 case 'I' :
165160 case 'i' :
166161 * p ++ = mp_obj_get_int_truncated (* a ++ );
167- mp_printf (& mp_plat_print , " %d %08x\n" , p [-1 ]);
168162 i += 1 ;
169163 break ;
170164 case 'H' :
@@ -201,17 +195,11 @@ STATIC void EVEL_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_
201195STATIC 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 ) {
202196 // mp_arg_check_num(n_args, kw_args, 1, 1, false);
203197 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 ) ;
207201}
208202
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-
215203STATIC const mp_obj_type_t EVEL_type = {
216204 { & mp_type_type },
217205 // Save on qstr's, reuse same as for module
@@ -233,5 +221,3 @@ const mp_obj_module_t eveL_module = {
233221 .base = { & mp_type_module },
234222 .globals = (mp_obj_dict_t * )& mp_module_eveL_globals ,
235223};
236-
237- // #endif // MICROPY_PY_BUILTINS_EVEL
0 commit comments