From 20587f308ec50fb89da672a2e9053237eff54cc6 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 27 Nov 2020 15:44:39 +0200 Subject: [PATCH] Merge time and utime modules. * Move clock class to utime module. * Update all examples to be compatible with utime. --- .../Arduino/00-Arduino/arduino_spi_slave.py | 2 +- .../Arduino/00-Arduino/arduino_uart.py | 2 +- scripts/examples/Arduino/01-Basics/main.py | 16 +-- .../Arduino/02-Board-Control/adc_read.py | 2 +- .../examples/Arduino/02-Board-Control/can.py | 2 +- .../Arduino/02-Board-Control/dac_write.py | 4 +- .../Arduino/02-Board-Control/led_control.py | 2 +- .../Arduino/02-Board-Control/pwm_control.py | 2 +- .../examples/Arduino/02-Board-Control/rtc.py | 2 +- .../Arduino/02-Board-Control/servo_control.py | 4 +- .../Arduino/02-Board-Control/spi_control.py | 6 +- .../Arduino/02-Board-Control/timer_control.py | 2 +- .../Arduino/02-Board-Control/timer_tests.py | 2 +- .../Arduino/02-Board-Control/uart_control.py | 2 +- .../Arduino/02-Board-Control/usb_hid.py | 2 +- .../examples/Arduino/03-Drawing/copy2fb.py | 2 +- .../07-Face-Detection/face_tracking.py | 2 +- .../Arduino/09-Feature-Detection/keypoints.py | 2 +- .../09-Feature-Detection/keypoints_save.py | 2 +- .../Arduino/19-Low-Power/extint_wakeup.py | 4 +- .../Arduino/32-modbus/modbus_rtu_slave.py | 2 +- .../examples/Arduino/37-Audio/micro_speech.py | 4 +- .../OpenMV/00-Arduino/arduino_spi_slave.py | 2 +- .../OpenMV/00-Arduino/arduino_uart.py | 2 +- scripts/examples/OpenMV/01-Basics/main.py | 16 +-- .../OpenMV/02-Board-Control/adc_read.py | 2 +- .../examples/OpenMV/02-Board-Control/can.py | 2 +- .../OpenMV/02-Board-Control/dac_write.py | 4 +- .../OpenMV/02-Board-Control/led_control.py | 2 +- .../OpenMV/02-Board-Control/pwm_control.py | 2 +- .../examples/OpenMV/02-Board-Control/rtc.py | 2 +- .../OpenMV/02-Board-Control/servo_control.py | 4 +- .../OpenMV/02-Board-Control/spi_control.py | 6 +- .../OpenMV/02-Board-Control/timer_control.py | 2 +- .../OpenMV/02-Board-Control/timer_tests.py | 2 +- .../OpenMV/02-Board-Control/uart_control.py | 2 +- .../OpenMV/02-Board-Control/usb_hid.py | 2 +- scripts/examples/OpenMV/03-Drawing/copy2fb.py | 2 +- .../OpenMV/07-Face-Detection/face_tracking.py | 2 +- .../OpenMV/09-Feature-Detection/keypoints.py | 2 +- .../09-Feature-Detection/keypoints_save.py | 2 +- .../OpenMV/14-WiFi-Shield/mqtt_pub.py | 2 +- .../OpenMV/14-WiFi-Shield/mqtt_sub.py | 2 +- .../examples/OpenMV/14-WiFi-Shield/scan.py | 2 +- .../examples/OpenMV/15-Servo-Shield/main.py | 4 +- .../OpenMV/19-Low-Power/extint_wakeup.py | 4 +- .../examples/OpenMV/23-Motor-Shield/motor.py | 10 +- .../OpenMV/23-Motor-Shield/stepper.py | 2 +- .../examples/OpenMV/29-IMU-Shield/imu_read.py | 2 +- .../30-Distance-Shield/distance_read.py | 2 +- .../OpenMV/32-modbus/modbus_rtu_slave.py | 2 +- .../examples/OpenMV/33-Light-Shield/light.py | 2 +- scripts/libraries/ssd1306.py | 4 +- src/Makefile | 2 +- src/micropython | 2 +- src/omv/Makefile | 2 +- src/omv/main.c | 8 +- src/omv/py/py_clock.c | 92 +++++++++++++ src/omv/py/{py_time.h => py_clock.h} | 10 +- src/omv/py/py_time.c | 126 ------------------ 60 files changed, 188 insertions(+), 222 deletions(-) create mode 100644 src/omv/py/py_clock.c rename src/omv/py/{py_time.h => py_clock.h} (68%) delete mode 100644 src/omv/py/py_time.c diff --git a/scripts/examples/Arduino/00-Arduino/arduino_spi_slave.py b/scripts/examples/Arduino/00-Arduino/arduino_spi_slave.py index 37adf4a23..7b3131c2f 100644 --- a/scripts/examples/Arduino/00-Arduino/arduino_spi_slave.py +++ b/scripts/examples/Arduino/00-Arduino/arduino_spi_slave.py @@ -52,7 +52,7 @@ def nss_callback(line): pyb.ExtInt(pyb.Pin("P3"), pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, nss_callback) while(True): - time.sleep(1000) + time.sleep_ms(1000) ################################################################################################### # Arduino Code diff --git a/scripts/examples/Arduino/00-Arduino/arduino_uart.py b/scripts/examples/Arduino/00-Arduino/arduino_uart.py index 12255cf3b..1269c8739 100644 --- a/scripts/examples/Arduino/00-Arduino/arduino_uart.py +++ b/scripts/examples/Arduino/00-Arduino/arduino_uart.py @@ -35,4 +35,4 @@ while(True): uart.write("Hello World!\n") if (uart.any()): print(uart.read()) - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/Arduino/01-Basics/main.py b/scripts/examples/Arduino/01-Basics/main.py index 97d6d921f..4ff900896 100644 --- a/scripts/examples/Arduino/01-Basics/main.py +++ b/scripts/examples/Arduino/01-Basics/main.py @@ -12,22 +12,22 @@ usb = pyb.USB_VCP() # This is a serial port object that allows you to while(not usb.isconnected()): led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(100) + time.sleep_ms(100) led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(600) + time.sleep_ms(600) led = pyb.LED(2) # Switch to using the green LED. while(usb.isconnected()): led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(100) + time.sleep_ms(100) led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(600) + time.sleep_ms(600) diff --git a/scripts/examples/Arduino/02-Board-Control/adc_read.py b/scripts/examples/Arduino/02-Board-Control/adc_read.py index 1854226e0..8903afbbf 100644 --- a/scripts/examples/Arduino/02-Board-Control/adc_read.py +++ b/scripts/examples/Arduino/02-Board-Control/adc_read.py @@ -10,4 +10,4 @@ adc = ADC("P6") # Must always be "P6". while(True): # The ADC has 12-bits of resolution for 4096 values. print("ADC = %fv" % ((adc.read() * 3.3) / 4095)) - time.sleep(100) + time.sleep_ms(100) diff --git a/scripts/examples/Arduino/02-Board-Control/can.py b/scripts/examples/Arduino/02-Board-Control/can.py index 5e8c6a6f9..ee7cf6761 100644 --- a/scripts/examples/Arduino/02-Board-Control/can.py +++ b/scripts/examples/Arduino/02-Board-Control/can.py @@ -24,7 +24,7 @@ if (TRANSMITTER): while (True): # Send message with id 1 can.send('Hello', 1) - time.sleep(1000) + time.sleep_ms(1000) else: # Runs on the receiving node. diff --git a/scripts/examples/Arduino/02-Board-Control/dac_write.py b/scripts/examples/Arduino/02-Board-Control/dac_write.py index d5f942880..c43a13c91 100644 --- a/scripts/examples/Arduino/02-Board-Control/dac_write.py +++ b/scripts/examples/Arduino/02-Board-Control/dac_write.py @@ -11,7 +11,7 @@ while(True): # The DAC has 8-12 bits of resolution (default 8-bits). for i in range(256): dac.write(i) - time.sleep(20) + time.sleep_ms(20) for i in range(256): dac.write(255-i) - time.sleep(20) + time.sleep_ms(20) diff --git a/scripts/examples/Arduino/02-Board-Control/led_control.py b/scripts/examples/Arduino/02-Board-Control/led_control.py index 9fcc0fbfc..c58bfb5de 100644 --- a/scripts/examples/Arduino/02-Board-Control/led_control.py +++ b/scripts/examples/Arduino/02-Board-Control/led_control.py @@ -24,4 +24,4 @@ def led_control(x): while(True): for i in range(16): led_control(i) - time.sleep(500) + time.sleep_ms(500) diff --git a/scripts/examples/Arduino/02-Board-Control/pwm_control.py b/scripts/examples/Arduino/02-Board-Control/pwm_control.py index b96e57cc0..ed9e60569 100644 --- a/scripts/examples/Arduino/02-Board-Control/pwm_control.py +++ b/scripts/examples/Arduino/02-Board-Control/pwm_control.py @@ -12,4 +12,4 @@ ch2 = tim.channel(2, Timer.PWM, pin=Pin("P8"), pulse_width_percent=75) ch3 = tim.channel(3, Timer.PWM, pin=Pin("P9"), pulse_width_percent=50) while (True): - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/Arduino/02-Board-Control/rtc.py b/scripts/examples/Arduino/02-Board-Control/rtc.py index 6911df74b..cfd2bbefc 100644 --- a/scripts/examples/Arduino/02-Board-Control/rtc.py +++ b/scripts/examples/Arduino/02-Board-Control/rtc.py @@ -9,4 +9,4 @@ rtc.datetime((2013, 7, 9, 2, 0, 0, 0, 0)) while (True): print(rtc.datetime()) - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/Arduino/02-Board-Control/servo_control.py b/scripts/examples/Arduino/02-Board-Control/servo_control.py index 4f5b40909..809fe3f7b 100644 --- a/scripts/examples/Arduino/02-Board-Control/servo_control.py +++ b/scripts/examples/Arduino/02-Board-Control/servo_control.py @@ -14,9 +14,9 @@ while(True): s1.pulse_width(1000 + i) s2.pulse_width(1999 - i) s3.pulse_width(1000 + i) - time.sleep(10) + time.sleep_ms(10) for i in range(1000): s1.pulse_width(1999 - i) s2.pulse_width(1000 + i) s3.pulse_width(1999 - i) - time.sleep(10) + time.sleep_ms(10) diff --git a/scripts/examples/Arduino/02-Board-Control/spi_control.py b/scripts/examples/Arduino/02-Board-Control/spi_control.py index 8136fc7c0..58effa166 100644 --- a/scripts/examples/Arduino/02-Board-Control/spi_control.py +++ b/scripts/examples/Arduino/02-Board-Control/spi_control.py @@ -41,12 +41,12 @@ def write_image(img): # Reset the LCD. rst.low() -time.sleep(100) +time.sleep_ms(100) rst.high() -time.sleep(100) +time.sleep_ms(100) write_command(0x11) # Sleep Exit -time.sleep(120) +time.sleep_ms(120) # Memory Data Access Control # Write 0xC8 for BGR mode. diff --git a/scripts/examples/Arduino/02-Board-Control/timer_control.py b/scripts/examples/Arduino/02-Board-Control/timer_control.py index 4bb7a024f..5ccdbe99f 100644 --- a/scripts/examples/Arduino/02-Board-Control/timer_control.py +++ b/scripts/examples/Arduino/02-Board-Control/timer_control.py @@ -16,4 +16,4 @@ tim = Timer(2, freq=1) # create a timer object using timer 2 - trigger at 1 tim.callback(tick) # set the callback to our tick function while (True): - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/Arduino/02-Board-Control/timer_tests.py b/scripts/examples/Arduino/02-Board-Control/timer_tests.py index 6e8daa714..deee30bec 100644 --- a/scripts/examples/Arduino/02-Board-Control/timer_tests.py +++ b/scripts/examples/Arduino/02-Board-Control/timer_tests.py @@ -17,7 +17,7 @@ for i in range(1, 18): print("Testing TIM%d... "%(i), end="") tim = Timer(i, freq=10) # create a timer object using timer 4 - trigger at 1Hz tim.callback(tick) # set the callback to our tick function - time.sleep(1000) + time.sleep_ms(1000) tim.deinit() except ValueError as e: print(e) diff --git a/scripts/examples/Arduino/02-Board-Control/uart_control.py b/scripts/examples/Arduino/02-Board-Control/uart_control.py index dc516a5c8..54a4122e1 100644 --- a/scripts/examples/Arduino/02-Board-Control/uart_control.py +++ b/scripts/examples/Arduino/02-Board-Control/uart_control.py @@ -14,4 +14,4 @@ uart = UART(3, 19200) while(True): uart.write("Hello World!\r") - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/Arduino/02-Board-Control/usb_hid.py b/scripts/examples/Arduino/02-Board-Control/usb_hid.py index 9b839a475..32adf34e3 100644 --- a/scripts/examples/Arduino/02-Board-Control/usb_hid.py +++ b/scripts/examples/Arduino/02-Board-Control/usb_hid.py @@ -28,4 +28,4 @@ while(True): # x, y and scroll # move 10 pixels to the right hid.send((0, 10, 0, 0)) - time.sleep(500) + time.sleep_ms(500) diff --git a/scripts/examples/Arduino/03-Drawing/copy2fb.py b/scripts/examples/Arduino/03-Drawing/copy2fb.py index 5cd34710f..3b0761a5a 100644 --- a/scripts/examples/Arduino/03-Drawing/copy2fb.py +++ b/scripts/examples/Arduino/03-Drawing/copy2fb.py @@ -18,4 +18,4 @@ sensor.set_pixformat(sensor.GRAYSCALE) img = image.Image("/example.bmp", copy_to_fb=True) # Add a small delay to allow the IDE to read the loaded image. -time.sleep(500) +time.sleep_ms(500) diff --git a/scripts/examples/Arduino/07-Face-Detection/face_tracking.py b/scripts/examples/Arduino/07-Face-Detection/face_tracking.py index 28dcdc801..f4571e872 100644 --- a/scripts/examples/Arduino/07-Face-Detection/face_tracking.py +++ b/scripts/examples/Arduino/07-Face-Detection/face_tracking.py @@ -44,7 +44,7 @@ while (kpts1 == None): print(kpts1) img.draw_keypoints(kpts1, size=24) img = sensor.snapshot() -time.sleep(2000) +time.sleep_ms(2000) # FPS clock clock = time.clock() diff --git a/scripts/examples/Arduino/09-Feature-Detection/keypoints.py b/scripts/examples/Arduino/09-Feature-Detection/keypoints.py index 8d5cf242d..0c4316a4d 100644 --- a/scripts/examples/Arduino/09-Feature-Detection/keypoints.py +++ b/scripts/examples/Arduino/09-Feature-Detection/keypoints.py @@ -22,7 +22,7 @@ def draw_keypoints(img, kpts): print(kpts) img.draw_keypoints(kpts) img = sensor.snapshot() - time.sleep(1000) + time.sleep_ms(1000) kpts1 = None # NOTE: uncomment to load a keypoints descriptor from file diff --git a/scripts/examples/Arduino/09-Feature-Detection/keypoints_save.py b/scripts/examples/Arduino/09-Feature-Detection/keypoints_save.py index ca3e51bcc..bcd1a2edf 100644 --- a/scripts/examples/Arduino/09-Feature-Detection/keypoints_save.py +++ b/scripts/examples/Arduino/09-Feature-Detection/keypoints_save.py @@ -33,5 +33,5 @@ img.save("/%s.pgm"%(FILE_NAME)) img.draw_keypoints(kpts) sensor.snapshot() -time.sleep(1000) +time.sleep_ms(1000) raise(Exception("Done! Please reset the camera")) diff --git a/scripts/examples/Arduino/19-Low-Power/extint_wakeup.py b/scripts/examples/Arduino/19-Low-Power/extint_wakeup.py index 6bee78a1d..7ce436696 100644 --- a/scripts/examples/Arduino/19-Low-Power/extint_wakeup.py +++ b/scripts/examples/Arduino/19-Low-Power/extint_wakeup.py @@ -16,6 +16,6 @@ machine.sleep() while (True): led.on() - time.sleep(100) + time.sleep_ms(100) led.off() - time.sleep(100) + time.sleep_ms(100) diff --git a/scripts/examples/Arduino/32-modbus/modbus_rtu_slave.py b/scripts/examples/Arduino/32-modbus/modbus_rtu_slave.py index 85ce4bdf9..b3ab0937e 100644 --- a/scripts/examples/Arduino/32-modbus/modbus_rtu_slave.py +++ b/scripts/examples/Arduino/32-modbus/modbus_rtu_slave.py @@ -8,7 +8,7 @@ while(True): if modbus.any(): modbus.handle(debug=True) else: - time.sleep(100) + time.sleep_ms(100) modbus.REGISTER[0] = 1000 modbus.REGISTER[1] += 1 modbus.REGISTER[3] += 3 diff --git a/scripts/examples/Arduino/37-Audio/micro_speech.py b/scripts/examples/Arduino/37-Audio/micro_speech.py index e8db00e30..e71d7185f 100644 --- a/scripts/examples/Arduino/37-Audio/micro_speech.py +++ b/scripts/examples/Arduino/37-Audio/micro_speech.py @@ -17,8 +17,8 @@ while (True): led = led_green if idx == 2 else led_red print(labels[idx]) for i in range(0, 4): - led.on(); time.sleep(25) - led.off(); time.sleep(25) + led.on(); time.sleep_ms(25) + led.off(); time.sleep_ms(25) # Stop streaming audio.stop_streaming() diff --git a/scripts/examples/OpenMV/00-Arduino/arduino_spi_slave.py b/scripts/examples/OpenMV/00-Arduino/arduino_spi_slave.py index 37adf4a23..7b3131c2f 100644 --- a/scripts/examples/OpenMV/00-Arduino/arduino_spi_slave.py +++ b/scripts/examples/OpenMV/00-Arduino/arduino_spi_slave.py @@ -52,7 +52,7 @@ def nss_callback(line): pyb.ExtInt(pyb.Pin("P3"), pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, nss_callback) while(True): - time.sleep(1000) + time.sleep_ms(1000) ################################################################################################### # Arduino Code diff --git a/scripts/examples/OpenMV/00-Arduino/arduino_uart.py b/scripts/examples/OpenMV/00-Arduino/arduino_uart.py index 12255cf3b..1269c8739 100644 --- a/scripts/examples/OpenMV/00-Arduino/arduino_uart.py +++ b/scripts/examples/OpenMV/00-Arduino/arduino_uart.py @@ -35,4 +35,4 @@ while(True): uart.write("Hello World!\n") if (uart.any()): print(uart.read()) - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/01-Basics/main.py b/scripts/examples/OpenMV/01-Basics/main.py index 97d6d921f..4ff900896 100644 --- a/scripts/examples/OpenMV/01-Basics/main.py +++ b/scripts/examples/OpenMV/01-Basics/main.py @@ -12,22 +12,22 @@ usb = pyb.USB_VCP() # This is a serial port object that allows you to while(not usb.isconnected()): led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(100) + time.sleep_ms(100) led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(600) + time.sleep_ms(600) led = pyb.LED(2) # Switch to using the green LED. while(usb.isconnected()): led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(100) + time.sleep_ms(100) led.on() - time.sleep(150) + time.sleep_ms(150) led.off() - time.sleep(600) + time.sleep_ms(600) diff --git a/scripts/examples/OpenMV/02-Board-Control/adc_read.py b/scripts/examples/OpenMV/02-Board-Control/adc_read.py index 1854226e0..8903afbbf 100644 --- a/scripts/examples/OpenMV/02-Board-Control/adc_read.py +++ b/scripts/examples/OpenMV/02-Board-Control/adc_read.py @@ -10,4 +10,4 @@ adc = ADC("P6") # Must always be "P6". while(True): # The ADC has 12-bits of resolution for 4096 values. print("ADC = %fv" % ((adc.read() * 3.3) / 4095)) - time.sleep(100) + time.sleep_ms(100) diff --git a/scripts/examples/OpenMV/02-Board-Control/can.py b/scripts/examples/OpenMV/02-Board-Control/can.py index 5e8c6a6f9..ee7cf6761 100644 --- a/scripts/examples/OpenMV/02-Board-Control/can.py +++ b/scripts/examples/OpenMV/02-Board-Control/can.py @@ -24,7 +24,7 @@ if (TRANSMITTER): while (True): # Send message with id 1 can.send('Hello', 1) - time.sleep(1000) + time.sleep_ms(1000) else: # Runs on the receiving node. diff --git a/scripts/examples/OpenMV/02-Board-Control/dac_write.py b/scripts/examples/OpenMV/02-Board-Control/dac_write.py index d5f942880..c43a13c91 100644 --- a/scripts/examples/OpenMV/02-Board-Control/dac_write.py +++ b/scripts/examples/OpenMV/02-Board-Control/dac_write.py @@ -11,7 +11,7 @@ while(True): # The DAC has 8-12 bits of resolution (default 8-bits). for i in range(256): dac.write(i) - time.sleep(20) + time.sleep_ms(20) for i in range(256): dac.write(255-i) - time.sleep(20) + time.sleep_ms(20) diff --git a/scripts/examples/OpenMV/02-Board-Control/led_control.py b/scripts/examples/OpenMV/02-Board-Control/led_control.py index 9fcc0fbfc..c58bfb5de 100644 --- a/scripts/examples/OpenMV/02-Board-Control/led_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/led_control.py @@ -24,4 +24,4 @@ def led_control(x): while(True): for i in range(16): led_control(i) - time.sleep(500) + time.sleep_ms(500) diff --git a/scripts/examples/OpenMV/02-Board-Control/pwm_control.py b/scripts/examples/OpenMV/02-Board-Control/pwm_control.py index b96e57cc0..ed9e60569 100644 --- a/scripts/examples/OpenMV/02-Board-Control/pwm_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/pwm_control.py @@ -12,4 +12,4 @@ ch2 = tim.channel(2, Timer.PWM, pin=Pin("P8"), pulse_width_percent=75) ch3 = tim.channel(3, Timer.PWM, pin=Pin("P9"), pulse_width_percent=50) while (True): - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/02-Board-Control/rtc.py b/scripts/examples/OpenMV/02-Board-Control/rtc.py index 6911df74b..cfd2bbefc 100644 --- a/scripts/examples/OpenMV/02-Board-Control/rtc.py +++ b/scripts/examples/OpenMV/02-Board-Control/rtc.py @@ -9,4 +9,4 @@ rtc.datetime((2013, 7, 9, 2, 0, 0, 0, 0)) while (True): print(rtc.datetime()) - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/02-Board-Control/servo_control.py b/scripts/examples/OpenMV/02-Board-Control/servo_control.py index 4f5b40909..809fe3f7b 100644 --- a/scripts/examples/OpenMV/02-Board-Control/servo_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/servo_control.py @@ -14,9 +14,9 @@ while(True): s1.pulse_width(1000 + i) s2.pulse_width(1999 - i) s3.pulse_width(1000 + i) - time.sleep(10) + time.sleep_ms(10) for i in range(1000): s1.pulse_width(1999 - i) s2.pulse_width(1000 + i) s3.pulse_width(1999 - i) - time.sleep(10) + time.sleep_ms(10) diff --git a/scripts/examples/OpenMV/02-Board-Control/spi_control.py b/scripts/examples/OpenMV/02-Board-Control/spi_control.py index 8136fc7c0..58effa166 100644 --- a/scripts/examples/OpenMV/02-Board-Control/spi_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/spi_control.py @@ -41,12 +41,12 @@ def write_image(img): # Reset the LCD. rst.low() -time.sleep(100) +time.sleep_ms(100) rst.high() -time.sleep(100) +time.sleep_ms(100) write_command(0x11) # Sleep Exit -time.sleep(120) +time.sleep_ms(120) # Memory Data Access Control # Write 0xC8 for BGR mode. diff --git a/scripts/examples/OpenMV/02-Board-Control/timer_control.py b/scripts/examples/OpenMV/02-Board-Control/timer_control.py index 4bb7a024f..5ccdbe99f 100644 --- a/scripts/examples/OpenMV/02-Board-Control/timer_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/timer_control.py @@ -16,4 +16,4 @@ tim = Timer(2, freq=1) # create a timer object using timer 2 - trigger at 1 tim.callback(tick) # set the callback to our tick function while (True): - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/02-Board-Control/timer_tests.py b/scripts/examples/OpenMV/02-Board-Control/timer_tests.py index 6e8daa714..deee30bec 100644 --- a/scripts/examples/OpenMV/02-Board-Control/timer_tests.py +++ b/scripts/examples/OpenMV/02-Board-Control/timer_tests.py @@ -17,7 +17,7 @@ for i in range(1, 18): print("Testing TIM%d... "%(i), end="") tim = Timer(i, freq=10) # create a timer object using timer 4 - trigger at 1Hz tim.callback(tick) # set the callback to our tick function - time.sleep(1000) + time.sleep_ms(1000) tim.deinit() except ValueError as e: print(e) diff --git a/scripts/examples/OpenMV/02-Board-Control/uart_control.py b/scripts/examples/OpenMV/02-Board-Control/uart_control.py index dc516a5c8..54a4122e1 100644 --- a/scripts/examples/OpenMV/02-Board-Control/uart_control.py +++ b/scripts/examples/OpenMV/02-Board-Control/uart_control.py @@ -14,4 +14,4 @@ uart = UART(3, 19200) while(True): uart.write("Hello World!\r") - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/02-Board-Control/usb_hid.py b/scripts/examples/OpenMV/02-Board-Control/usb_hid.py index 9b839a475..32adf34e3 100644 --- a/scripts/examples/OpenMV/02-Board-Control/usb_hid.py +++ b/scripts/examples/OpenMV/02-Board-Control/usb_hid.py @@ -28,4 +28,4 @@ while(True): # x, y and scroll # move 10 pixels to the right hid.send((0, 10, 0, 0)) - time.sleep(500) + time.sleep_ms(500) diff --git a/scripts/examples/OpenMV/03-Drawing/copy2fb.py b/scripts/examples/OpenMV/03-Drawing/copy2fb.py index 5cd34710f..3b0761a5a 100644 --- a/scripts/examples/OpenMV/03-Drawing/copy2fb.py +++ b/scripts/examples/OpenMV/03-Drawing/copy2fb.py @@ -18,4 +18,4 @@ sensor.set_pixformat(sensor.GRAYSCALE) img = image.Image("/example.bmp", copy_to_fb=True) # Add a small delay to allow the IDE to read the loaded image. -time.sleep(500) +time.sleep_ms(500) diff --git a/scripts/examples/OpenMV/07-Face-Detection/face_tracking.py b/scripts/examples/OpenMV/07-Face-Detection/face_tracking.py index 28dcdc801..f4571e872 100644 --- a/scripts/examples/OpenMV/07-Face-Detection/face_tracking.py +++ b/scripts/examples/OpenMV/07-Face-Detection/face_tracking.py @@ -44,7 +44,7 @@ while (kpts1 == None): print(kpts1) img.draw_keypoints(kpts1, size=24) img = sensor.snapshot() -time.sleep(2000) +time.sleep_ms(2000) # FPS clock clock = time.clock() diff --git a/scripts/examples/OpenMV/09-Feature-Detection/keypoints.py b/scripts/examples/OpenMV/09-Feature-Detection/keypoints.py index 8d5cf242d..0c4316a4d 100644 --- a/scripts/examples/OpenMV/09-Feature-Detection/keypoints.py +++ b/scripts/examples/OpenMV/09-Feature-Detection/keypoints.py @@ -22,7 +22,7 @@ def draw_keypoints(img, kpts): print(kpts) img.draw_keypoints(kpts) img = sensor.snapshot() - time.sleep(1000) + time.sleep_ms(1000) kpts1 = None # NOTE: uncomment to load a keypoints descriptor from file diff --git a/scripts/examples/OpenMV/09-Feature-Detection/keypoints_save.py b/scripts/examples/OpenMV/09-Feature-Detection/keypoints_save.py index ca3e51bcc..bcd1a2edf 100644 --- a/scripts/examples/OpenMV/09-Feature-Detection/keypoints_save.py +++ b/scripts/examples/OpenMV/09-Feature-Detection/keypoints_save.py @@ -33,5 +33,5 @@ img.save("/%s.pgm"%(FILE_NAME)) img.draw_keypoints(kpts) sensor.snapshot() -time.sleep(1000) +time.sleep_ms(1000) raise(Exception("Done! Please reset the camera")) diff --git a/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_pub.py b/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_pub.py index 8a67afd85..51ad4668c 100644 --- a/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_pub.py +++ b/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_pub.py @@ -27,4 +27,4 @@ client.connect() while (True): client.publish("openmv/test", "Hello World!") - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_sub.py b/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_sub.py index f9bdada77..0bd7e09d8 100644 --- a/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_sub.py +++ b/scripts/examples/OpenMV/14-WiFi-Shield/mqtt_sub.py @@ -34,4 +34,4 @@ client.subscribe("openmv/test") while (True): client.check_msg() # poll for messages. - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/14-WiFi-Shield/scan.py b/scripts/examples/OpenMV/14-WiFi-Shield/scan.py index 273cc4fcb..77ffa74e8 100644 --- a/scripts/examples/OpenMV/14-WiFi-Shield/scan.py +++ b/scripts/examples/OpenMV/14-WiFi-Shield/scan.py @@ -12,4 +12,4 @@ while (True): for ap in scan_result: print("Channel:%d RSSI:%d Auth:%d BSSID:%s SSID:%s"%(ap)) print() - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/15-Servo-Shield/main.py b/scripts/examples/OpenMV/15-Servo-Shield/main.py index 44e37d0ba..124af8b1e 100644 --- a/scripts/examples/OpenMV/15-Servo-Shield/main.py +++ b/scripts/examples/OpenMV/15-Servo-Shield/main.py @@ -17,7 +17,7 @@ servo = Servos(i2c, address=0x40, freq=50, min_us=650, max_us=2800, degrees=180) while True: for i in range(0, 8): servo.position(i, 0) - time.sleep(500) + time.sleep_ms(500) for i in range(0, 8): servo.position(i, 180) - time.sleep(500) + time.sleep_ms(500) diff --git a/scripts/examples/OpenMV/19-Low-Power/extint_wakeup.py b/scripts/examples/OpenMV/19-Low-Power/extint_wakeup.py index 6bee78a1d..7ce436696 100644 --- a/scripts/examples/OpenMV/19-Low-Power/extint_wakeup.py +++ b/scripts/examples/OpenMV/19-Low-Power/extint_wakeup.py @@ -16,6 +16,6 @@ machine.sleep() while (True): led.on() - time.sleep(100) + time.sleep_ms(100) led.off() - time.sleep(100) + time.sleep_ms(100) diff --git a/scripts/examples/OpenMV/23-Motor-Shield/motor.py b/scripts/examples/OpenMV/23-Motor-Shield/motor.py index f5d95f6f0..e22c970ce 100644 --- a/scripts/examples/OpenMV/23-Motor-Shield/motor.py +++ b/scripts/examples/OpenMV/23-Motor-Shield/motor.py @@ -12,20 +12,20 @@ m2 = Motor(2) # motor 2: B0 and B1 while (True): m1.set_speed(100) # Forward m2.set_speed(100) # Forward - time.sleep(1000) + time.sleep_ms(1000) m1.set_speed(0) # Stop m2.set_speed(0) # Stop - time.sleep(1000) + time.sleep_ms(1000) m1.set_speed(-100) # Reverse m2.set_speed(-100) # Reverse - time.sleep(1000) + time.sleep_ms(1000) m1.set_speed(0) # Stop m2.set_speed(0) # Stop - time.sleep(1000) + time.sleep_ms(1000) m1.set_speed(-50) # Reverse slow m2.set_speed(-50) # Reverse slow - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/23-Motor-Shield/stepper.py b/scripts/examples/OpenMV/23-Motor-Shield/stepper.py index a4937168a..7865b1b02 100644 --- a/scripts/examples/OpenMV/23-Motor-Shield/stepper.py +++ b/scripts/examples/OpenMV/23-Motor-Shield/stepper.py @@ -11,4 +11,4 @@ stepper.set_speed(1) # rpm = 1 stepper.set_power(80) #set pwm while (True): stepper.step(200) # motor rotates 1 circle - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/examples/OpenMV/29-IMU-Shield/imu_read.py b/scripts/examples/OpenMV/29-IMU-Shield/imu_read.py index f9eae8530..75bdcdd58 100644 --- a/scripts/examples/OpenMV/29-IMU-Shield/imu_read.py +++ b/scripts/examples/OpenMV/29-IMU-Shield/imu_read.py @@ -20,4 +20,4 @@ while True: #print('Linear acceleration (m/s^2)', x, y, z) #x, y, z = imu.gravity() #print('Gravity (m/s^2):', x, y, z) - time.sleep(100) + time.sleep_ms(100) diff --git a/scripts/examples/OpenMV/30-Distance-Shield/distance_read.py b/scripts/examples/OpenMV/30-Distance-Shield/distance_read.py index a41d65d19..60a797278 100644 --- a/scripts/examples/OpenMV/30-Distance-Shield/distance_read.py +++ b/scripts/examples/OpenMV/30-Distance-Shield/distance_read.py @@ -7,5 +7,5 @@ distance = VL53L1X(i2c) while True: print("range: mm ", distance.read()) - time.sleep(50) + time.sleep_ms(50) diff --git a/scripts/examples/OpenMV/32-modbus/modbus_rtu_slave.py b/scripts/examples/OpenMV/32-modbus/modbus_rtu_slave.py index 85ce4bdf9..b3ab0937e 100644 --- a/scripts/examples/OpenMV/32-modbus/modbus_rtu_slave.py +++ b/scripts/examples/OpenMV/32-modbus/modbus_rtu_slave.py @@ -8,7 +8,7 @@ while(True): if modbus.any(): modbus.handle(debug=True) else: - time.sleep(100) + time.sleep_ms(100) modbus.REGISTER[0] = 1000 modbus.REGISTER[1] += 1 modbus.REGISTER[3] += 3 diff --git a/scripts/examples/OpenMV/33-Light-Shield/light.py b/scripts/examples/OpenMV/33-Light-Shield/light.py index 0849d46bc..6d00c8ecd 100644 --- a/scripts/examples/OpenMV/33-Light-Shield/light.py +++ b/scripts/examples/OpenMV/33-Light-Shield/light.py @@ -6,4 +6,4 @@ light = Timer(2, freq=50000).channel(1, Timer.PWM, pin=Pin("P6")) light.pulse_width_percent(100) # adjust light 0~100 while (True): - time.sleep(1000) + time.sleep_ms(1000) diff --git a/scripts/libraries/ssd1306.py b/scripts/libraries/ssd1306.py index 7ed7010e2..f820ade07 100644 --- a/scripts/libraries/ssd1306.py +++ b/scripts/libraries/ssd1306.py @@ -151,7 +151,7 @@ class SSD1306_SPI(SSD1306): def poweron(self): self.res.high() - time.sleep(1) + time.sleep_ms(1) self.res.low() - time.sleep(10) + time.sleep_ms(10) self.res.high() diff --git a/src/Makefile b/src/Makefile index 9daa689c6..5ca208853 100755 --- a/src/Makefile +++ b/src/Makefile @@ -310,7 +310,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/py/, \ py_omv.o \ py_sensor.o \ py_image.o \ - py_time.o \ + py_clock.o \ py_lcd.o \ py_lcd_touch.o \ py_tv.o \ diff --git a/src/micropython b/src/micropython index 32e2955bf..529a9eaaa 160000 --- a/src/micropython +++ b/src/micropython @@ -1 +1 @@ -Subproject commit 32e2955bf62c004896817be42c66091aee164edc +Subproject commit 529a9eaaa04576d3bfdf9b76c5a2364ffe6051e9 diff --git a/src/omv/Makefile b/src/omv/Makefile index 46f759f38..327a262ff 100644 --- a/src/omv/Makefile +++ b/src/omv/Makefile @@ -95,7 +95,7 @@ SRCS += $(addprefix py/, \ py_omv.c \ py_sensor.c \ py_image.c \ - py_time.c \ + py_clock.c \ py_lcd.c \ py_lcd_touch.c \ py_tv.c \ diff --git a/src/omv/main.c b/src/omv/main.c index 083fcb0a1..7a81289b0 100644 --- a/src/omv/main.c +++ b/src/omv/main.c @@ -97,13 +97,13 @@ static const char fresh_main_py[] = "usb = pyb.USB_VCP()\n" "while (usb.isconnected()==False):\n" " led.on()\n" -" time.sleep(150)\n" +" time.sleep_ms(150)\n" " led.off()\n" -" time.sleep(100)\n" +" time.sleep_ms(100)\n" " led.on()\n" -" time.sleep(150)\n" +" time.sleep_ms(150)\n" " led.off()\n" -" time.sleep(600)\n" +" time.sleep_ms(600)\n" ; static const char fresh_readme_txt[] = diff --git a/src/omv/py/py_clock.c b/src/omv/py/py_clock.c new file mode 100644 index 000000000..361149cc6 --- /dev/null +++ b/src/omv/py/py_clock.c @@ -0,0 +1,92 @@ +/* + * This file is part of the OpenMV project. + * + * Copyright (c) 2013-2019 Ibrahim Abdelkader + * Copyright (c) 2013-2019 Kwabena W. Agyeman + * + * This work is licensed under the MIT license, see the file LICENSE for details. + * + * Clock Python module. + */ +#include +#include "systick.h" +#include "py_clock.h" + +/* Clock Type */ +typedef struct _py_clock_obj_t { + mp_obj_base_t base; + uint32_t t_start; + uint32_t t_ticks; + uint32_t t_frame; +} py_clock_obj_t; + +mp_obj_t py_clock_tick(mp_obj_t clock_obj) +{ + py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; + clock->t_start = systick_current_millis(); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_clock_tick_obj, py_clock_tick); + +mp_obj_t py_clock_fps(mp_obj_t clock_obj) +{ + py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; + clock->t_frame++; + clock->t_ticks += (systick_current_millis()-clock->t_start); + float fps = 1000.0f / (clock->t_ticks/(float)clock->t_frame); + return mp_obj_new_float(fps); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_clock_fps_obj, py_clock_fps); + +mp_obj_t py_clock_avg(mp_obj_t clock_obj) +{ + py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; + clock->t_frame++; + clock->t_ticks += (systick_current_millis()-clock->t_start); + return mp_obj_new_float(clock->t_ticks/(float)clock->t_frame); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_clock_avg_obj, py_clock_avg); + +mp_obj_t py_clock_reset(mp_obj_t clock_obj) +{ + py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; + clock->t_start = 0; + clock->t_ticks = 0; + clock->t_frame = 0; + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_clock_reset_obj, py_clock_reset); + +STATIC void py_clock_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) +{ + py_clock_obj_t *self = self_in; + mp_printf(print, "t_start:%d t_ticks:%d t_frame:%d\n", self->t_start, self->t_ticks, self->t_frame); +} + +mp_obj_t py_clock_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) +{ + py_clock_obj_t *clock =NULL; + clock = m_new_obj(py_clock_obj_t); + clock->base.type = &py_clock_type; + clock->t_start = 0; + clock->t_ticks = 0; + clock->t_frame = 0; + return MP_OBJ_FROM_PTR(clock); +} + +STATIC const mp_rom_map_elem_t py_clock_locals_dict_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR_tick), MP_ROM_PTR(&py_clock_tick_obj)}, + { MP_OBJ_NEW_QSTR(MP_QSTR_fps), MP_ROM_PTR(&py_clock_fps_obj)}, + { MP_OBJ_NEW_QSTR(MP_QSTR_avg), MP_ROM_PTR(&py_clock_avg_obj)}, + { MP_OBJ_NEW_QSTR(MP_QSTR_reset), MP_ROM_PTR(&py_clock_reset_obj)}, + { NULL, NULL }, +}; +STATIC MP_DEFINE_CONST_DICT(py_clock_locals_dict, py_clock_locals_dict_table); + +const mp_obj_type_t py_clock_type = { + { &mp_type_type }, + .name = MP_QSTR_Clock, + .print = py_clock_print, + .make_new = py_clock_make_new, + .locals_dict = (mp_obj_t)&py_clock_locals_dict, +}; diff --git a/src/omv/py/py_time.h b/src/omv/py/py_clock.h similarity index 68% rename from src/omv/py/py_time.h rename to src/omv/py/py_clock.h index 69e415fe3..da0f94b71 100644 --- a/src/omv/py/py_time.h +++ b/src/omv/py/py_clock.h @@ -6,9 +6,9 @@ * * This work is licensed under the MIT license, see the file LICENSE for details. * - * Time Python module. + * Clock Python module. */ -#ifndef __PY_TIME_H__ -#define __PY_TIME_H__ -const mp_obj_module_t *py_time_init(); -#endif // __PY_TIME_H__ +#ifndef __PY_CLOCK_H__ +#define __PY_CLOCK_H__ +const mp_obj_type_t py_clock_type; +#endif // __PY_CLOCK_H__ diff --git a/src/omv/py/py_time.c b/src/omv/py/py_time.c deleted file mode 100644 index 54f4d8cf6..000000000 --- a/src/omv/py/py_time.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This file is part of the OpenMV project. - * - * Copyright (c) 2013-2019 Ibrahim Abdelkader - * Copyright (c) 2013-2019 Kwabena W. Agyeman - * - * This work is licensed under the MIT license, see the file LICENSE for details. - * - * Time Python module. - */ -#include -#include "systick.h" -#include "py_time.h" - -/* Clock Type */ -typedef struct _py_clock_obj_t { - mp_obj_base_t base; - uint32_t t_start; - uint32_t t_ticks; - uint32_t t_frame; -} py_clock_obj_t; - -mp_obj_t py_clock_tick(mp_obj_t clock_obj) -{ - py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; - clock->t_start = systick_current_millis(); - return mp_const_none; -} - -mp_obj_t py_clock_fps(mp_obj_t clock_obj) -{ - py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; - clock->t_frame++; - clock->t_ticks += (systick_current_millis()-clock->t_start); - float fps = 1000.0f / (clock->t_ticks/(float)clock->t_frame); - return mp_obj_new_float(fps); -} - -mp_obj_t py_clock_avg(mp_obj_t clock_obj) -{ - py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; - clock->t_frame++; - clock->t_ticks += (systick_current_millis()-clock->t_start); - return mp_obj_new_float(clock->t_ticks/(float)clock->t_frame); -} - -mp_obj_t py_clock_reset(mp_obj_t clock_obj) -{ - py_clock_obj_t *clock = (py_clock_obj_t*) clock_obj; - clock->t_start = 0; - clock->t_ticks = 0; - clock->t_frame = 0; - return mp_const_none; -} - -static void py_clock_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) -{ - py_clock_obj_t *self = self_in; - - /* print some info */ - mp_printf(print, "t_start:%d t_ticks:%d t_frame:%d\n", - self->t_start, self->t_ticks, self->t_frame); -} - -static MP_DEFINE_CONST_FUN_OBJ_1(py_clock_tick_obj, py_clock_tick); -static MP_DEFINE_CONST_FUN_OBJ_1(py_clock_fps_obj, py_clock_fps); -static MP_DEFINE_CONST_FUN_OBJ_1(py_clock_avg_obj, py_clock_avg); -static MP_DEFINE_CONST_FUN_OBJ_1(py_clock_reset_obj, py_clock_reset); - -static const mp_map_elem_t locals_dict_table[] = { - { MP_OBJ_NEW_QSTR(MP_QSTR_tick), (mp_obj_t)&py_clock_tick_obj}, - { MP_OBJ_NEW_QSTR(MP_QSTR_fps), (mp_obj_t)&py_clock_fps_obj}, - { MP_OBJ_NEW_QSTR(MP_QSTR_avg), (mp_obj_t)&py_clock_avg_obj}, - { MP_OBJ_NEW_QSTR(MP_QSTR_reset), (mp_obj_t)&py_clock_reset_obj}, - { NULL, NULL }, -}; - -STATIC MP_DEFINE_CONST_DICT(locals_dict, locals_dict_table); - -static const mp_obj_type_t py_clock_type = { - { &mp_type_type }, - .name = MP_QSTR_Clock, - .print = py_clock_print, - .locals_dict = (mp_obj_t)&locals_dict, -}; - -static mp_obj_t py_time_ticks() -{ - return mp_obj_new_int(systick_current_millis()); -} - -static mp_obj_t py_time_sleep(mp_obj_t ms) -{ - systick_sleep(mp_obj_get_int(ms)); - return mp_const_none; -} - -static mp_obj_t py_time_clock() -{ - py_clock_obj_t *clock =NULL; - clock = m_new_obj(py_clock_obj_t); - clock->base.type = &py_clock_type; - clock->t_start = 0; - clock->t_ticks = 0; - clock->t_frame = 0; - - return clock; -} - -STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_time_ticks_obj, py_time_ticks); -STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_time_sleep_obj, py_time_sleep); -STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_time_clock_obj, py_time_clock); - -static const mp_map_elem_t globals_dict_table[] = { - { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_time) }, - { MP_OBJ_NEW_QSTR(MP_QSTR_ticks), (mp_obj_t)&py_time_ticks_obj }, - { MP_OBJ_NEW_QSTR(MP_QSTR_sleep), (mp_obj_t)&py_time_sleep_obj }, - { MP_OBJ_NEW_QSTR(MP_QSTR_clock), (mp_obj_t)&py_time_clock_obj }, -}; - -STATIC MP_DEFINE_CONST_DICT(globals_dict, globals_dict_table); - -const mp_obj_module_t time_module = { - .base = { &mp_type_module }, - .globals = (mp_obj_t)&globals_dict, -};