microDev
51f8603783
add getpass module
2021-08-09 17:50:28 +05:30
microDev
063e3946d6
Merge pull request #5094 from jepler/quirc
...
Add qrio: Decode QR codes with quirc lib
2021-08-07 09:30:20 +05:30
Jeff Epler
67551c1ac0
qrio: Split QRInfo & PixelPolicy to their own .c/.h files
2021-08-06 09:53:17 -05:00
Jeff Epler
bd903f2f03
Add qrio: Decode QR codes with quirc lib
2021-08-04 09:16:00 -05:00
microDev
a3998d0626
add atexit module
2021-07-30 09:32:28 +05:30
microDev
f371c0a609
add traceback module
2021-07-28 18:06:23 +05:30
Dan Halbert
901a6c27c0
remove gamepad; deprecate gamepadshift
2021-07-26 22:15:09 -04:00
Scott Shawcroft
f84cb94819
Remove OSError(0) and old network modules
...
The newer modules are `socketpool` and `ssl`.
Fixes #3924 , related to #2021 , closes #1880 , closes #2273 , closes #2274
2021-07-21 17:33:40 -07:00
Kattni Rembor
dc2907ac1b
Rename _pixelbuf to adafruit_pixelbuf, alias.
2021-07-16 13:31:40 -04:00
Kattni Rembor
4579bf9b12
Rename rainbow to rainbowio
2021-07-12 14:40:01 -04:00
Kattni Rembor
289575a811
Adding rainbow module.
2021-07-08 15:55:13 -04:00
Dan Halbert
af66931f71
Added keypad.ShiftRegisterKeys
2021-06-17 20:51:45 -04:00
Dan Halbert
cd31136c30
factor out keypad.EventQueue
2021-06-16 15:55:54 -04:00
Dan Halbert
627c426259
wip
2021-06-14 16:00:15 -04:00
Dan Halbert
7d23206018
Inital keypad work: Keys working: one pin per key
...
keypad.Buttons and keypad.State
Buttons -> Keys; further work
wip
wip
wip: compiles
about to try
keypad.Keys working
2021-06-08 20:27:31 -04:00
microDev
1b972c51c3
add authmode class
2021-04-29 18:42:36 +05:30
Scott Shawcroft
17fcd499b2
Merge pull request #4649 from tannewt/merge_1.11_2
...
Merge MicroPython v1.11 into CircuitPython
2021-04-27 11:02:02 -07:00
Scott Shawcroft
76033d5115
Merge MicroPython v1.11 into CircuitPython
2021-04-26 15:47:41 -07:00
Jeff Epler
fc4538f845
WIP: Implement 'ParallelImageCapture' for samd51
2021-04-16 17:18:59 -05:00
Artyom Skrobov
c6ee471b52
Merge branch 'main' of https://github.com/adafruit/circuitpython into patch-3
2021-04-13 00:32:19 -04:00
Jeff Epler
3ce0b512f8
rasberrypi: IncrementalEncoder: factor out state machine
2021-04-08 16:25:47 -05:00
Artyom Skrobov
8056af8648
[synthio] add a simple MidiTrack implementation
2021-03-26 16:38:10 -04:00
Kevin Matocha
b720028642
Add bitmaptools module
2021-02-23 23:23:14 -06:00
Dan Halbert
67406488d1
merge from upstream; re-alphabetize
2021-02-19 14:22:50 -05:00
Jeff Epler
72e8fb085c
remove debug print during build
2021-02-18 16:01:23 -06:00
Jeff Epler
7fd4567893
bitops: rename from _bit_transpose, describe the algorithm
2021-02-18 15:41:23 -06:00
Jeff Epler
9cf7d73c6c
core: add bit_transpose function
...
.. this version can only handle exactly 8 bits "across". The restriction
may be relaxed in a future revision.
2021-02-18 11:32:47 -06:00
Dan Halbert
d54b5861a3
wip
2021-02-12 19:01:14 -05:00
Kevin Banks
215a56c920
Merge branch 'main' into webusb (trying to get CI back online)
2021-02-03 16:48:28 -06:00
Kevin Banks
fbfb7b68cc
Most of the code we need has been pulled in from the tinyusb webusb_serial demo. Still LOTS to do regarding descriptors.
2021-01-25 20:37:58 -06:00
Lucian Copeland
9f34ec78c4
Separate Socket and SSLSocket, add LWIP connect
2021-01-25 17:07:25 -05:00
Scott Shawcroft
733094aead
Add initial RP2040 support
...
The RP2040 is new microcontroller from Raspberry Pi that features
two Cortex M0s and eight PIO state machines that are good for
crunching lots of data. It has 264k RAM and a built in UF2
bootloader too.
Datasheet: https://pico.raspberrypi.org/files/rp2040_datasheet.pdf
2021-01-20 19:16:56 -08:00
Scott Shawcroft
ba507a8193
Merge pull request #3957 from dhalbert/gcc10-debug-builds
...
new CIRCUITPY_DEBUG flag passes DEBUG into C preprocessor
2021-01-11 15:36:12 -08:00
Dan Halbert
255ffa979c
avoid inline compile errors
2021-01-08 23:07:21 -05:00
iot49
1a82555803
Merge branch 'main' into msgpack
2021-01-05 11:19:11 -08:00
microDev
28ce5e8988
Merge branch 'main' into touch-s2
2020-12-30 22:44:22 +05:30
microDev
8eaf2b0c19
implement touch alarm
2020-12-18 12:54:36 +05:30
microDev
4512290ba0
Merge branch 'main' into ota-s2
2020-12-18 00:44:00 +05:30
microDev
4863413bc9
rename ota to dualbank
2020-12-18 00:34:56 +05:30
Scott Shawcroft
344d3c59cb
Merge branch 'main' into msgpack
2020-12-11 11:10:30 -08:00
Dan Halbert
5964163649
Initial SleepMemory code
2020-12-10 13:03:40 -05:00
microDev
fc23a0cc8a
implement ota module
2020-12-08 11:30:00 +05:30
Bernhard Boser
534b48fcfe
remove a ~ from doc that causes an error; add ExtType.c to circuitpy_defns.mk
2020-12-07 16:08:16 -08:00
Scott Shawcroft
1130b80e2a
Merge pull request #3612 from gamblor21/bus_device
...
Moving Adafruit_CircuitPython_BusDevice to core
2020-12-02 13:23:02 -08:00
Scott Shawcroft
608c98501b
Merge remote-tracking branch 'adafruit/main' into msgpack
2020-12-02 13:10:39 -08:00
Bernhard Boser
513253bc3f
moved logic to shared-module and added documentation
2020-12-01 18:38:14 -08:00
Bernhard Boser
90c203a3dd
add module msgpack
2020-12-01 18:38:14 -08:00
Dan Halbert
ef0830bfe2
merge from upstream + wip
2020-11-25 17:52:06 -05:00
Dan Halbert
9dbea36eac
changed alarm.time API
2020-11-25 15:09:27 -05:00
Dan Halbert
7a45afc549
working, but need to avoid deep sleeping too fast before USB ready
2020-11-23 22:44:53 -05:00
Dan Halbert
75559f35cc
wip: ResetReason to microcontroller.cpu
2020-11-21 23:29:52 -05:00
Dan Halbert
e4c66990e2
compiles
2020-11-20 23:33:39 -05:00
Dan Halbert
649c930536
wip
2020-11-19 15:43:39 -05:00
Dan Halbert
682054a216
WIP: redo API; not compiled yet
2020-11-19 00:23:27 -05:00
Dan Halbert
bb77f1d130
wip: initial code changes, starting from @tannewt's sleepio branch
2020-11-16 11:56:20 -05:00
gamblor21
4c93db3595
Renamed to adafruit_bus_device
2020-11-03 18:35:20 -06:00
gamblor21
78477a374a
Initial SPI commit
2020-10-31 12:17:29 -05:00
microDev
930cf14dce
Add check for invalid io, function to disable all alarms
2020-10-27 16:17:26 -07:00
microDev
59df1a11ad
Add alarm_touch module
2020-10-27 16:16:52 -07:00
microDev
da449723df
Fix build error
2020-10-27 16:16:15 -07:00
microDev
4d8ffdca8d
restructure alarm modules
2020-10-27 16:15:09 -07:00
microDev
e5ff55b15c
Renamed alarm modules
2020-10-27 16:13:25 -07:00
microDev
e310b871c8
Get io wake working
2020-10-27 16:13:25 -07:00
microDev
90b9ec6f2c
Initial Sleep Support
2020-10-27 16:13:22 -07:00
gamblor21
b637d3911e
Initial commit
2020-10-24 20:48:35 -05:00
Scott Shawcroft
1eb1434fc9
Merge pull request #3537 from jepler/update-protomatter-2
...
rgbmatrix: update protomatter to 1.0.5 tag
2020-10-12 15:45:51 -07:00
Jeff Epler
c139eccc92
remove warning that seems unneeded now
2020-10-11 16:23:02 -05:00
Jeff Epler
5e38bb98cb
rgbmatrix: update protomatter to 1.0.5 tag
...
this is compile-tested on
stm32f405 feather
matrixportal
nrf52840 feather
but not actually tested-tested.
2020-10-10 14:30:37 -05:00
Jeff Epler
a4cc3ad6cb
canio: RemoteTransmissionRequest: Split implementation, keep one structure
...
This already begins obscuring things, because now there are two sets of
shared-module functions for manipulating the same structure, e.g.,
common_hal_canio_remote_transmission_request_get_id and
common_hal_canio_message_get_id
2020-09-28 17:22:00 -05:00
Jeff Epler
4869dbdc67
canio: rename from _canio
...
This reflects our belief that the API is stable enough to avoid incompatible changes during 6.x.
2020-09-21 16:44:26 -05:00
Jeff Epler
a2e1867f69
_canio: Minimal implementation for SAM E5x MCUs
...
Tested & working:
* Send standard packets
* Receive standard packets (1 FIFO, no filter)
Interoperation between SAM E54 Xplained running this tree and
MicroPython running on STM32F405 Feather with an external
transceiver was also tested.
Many other aspects of a full implementation are not yet present,
such as error detection and recovery.
2020-09-21 16:44:26 -05:00
Kamil Tomaszewski
c2fc592c2c
camera: Change API
2020-09-14 13:11:15 +02:00
Kamil Tomaszewski
064c597b60
camera: Implement new library for camera
2020-09-14 13:11:15 +02:00
Jeff Epler
90f7340bfc
move implicit-fallthrough warning enable to defns.mk
2020-09-13 13:13:09 -05:00
Scott Shawcroft
96cf60fbbd
Merge remote-tracking branch 'adafruit/main' into native_wifi
2020-09-03 16:34:56 -07:00
Dan Halbert
6dbd369272
merge from upstream
2020-08-30 14:39:03 -04:00
Scott Shawcroft
8b71e26abd
Merge remote-tracking branch 'adafruit/main' into native_wifi
2020-08-25 16:39:23 -07:00
Dan Halbert
0e30dd8bcc
merge from upstream; working; includes debug_out code for debugging via Saleae for posterity
2020-08-20 20:29:57 -04:00
Scott Shawcroft
430530c74b
SSL works until it runs out of memory
2020-08-19 14:23:28 -07:00
Scott Shawcroft
c9ece21c28
SocketPool stubbed out
2020-08-19 14:22:13 -07:00
Scott Shawcroft
3860991111
Ping work and start to add socketpool
2020-08-19 14:22:13 -07:00
Scott Shawcroft
c62ab6e09a
Add ipaddress
2020-08-19 14:22:12 -07:00
Scott Shawcroft
1a6f4e0fe0
Scanning WIP. Need to sort out supervisor memory
2020-08-19 14:22:12 -07:00
Scott Shawcroft
c5b8401a15
First crack at native wifi API
2020-08-19 14:21:59 -07:00
Scott Shawcroft
6857f98426
Split pulseio.PWMOut into pwmio
...
This gives us better granularity when implementing new ports because
PWMOut is commonly implemented before PulseIn and PulseOut.
Fixes #3211
2020-08-18 13:08:33 -07:00
Scott Shawcroft
d01f5dc0bd
Turn off terminalio for ja and ko
...
The font is missing many characters and the build needs the space.
We can optimize font storage when we get a good font.
The serial output will work as usual.
2020-08-17 17:17:59 -07:00
Jeff Epler
c1400bae9b
sharpmemory: Implement support for Sharp Memory Displays in framebufferio
2020-08-12 07:32:18 -05:00
Dan Halbert
0a60aee3e4
wip: compiles
2020-08-02 11:36:38 -04:00
Dan Halbert
f6f45c82a1
wip: ATT protocol
2020-07-23 18:54:26 -04:00
Scott Shawcroft
518d909b2c
Add memorymonitor module
2020-07-17 17:15:03 -07:00
Dan Halbert
a5ab2829eb
use zephyr include files; wip: compiles
2020-07-08 09:33:41 -04:00
Diego Elio Pettenò
34b4993d63
Add license to some obvious files.
2020-07-06 19:16:25 +01:00
Dan Halbert
11cb3e3b4b
hci skeleton done; not working yet
2020-06-30 23:19:40 -04:00
Dan Halbert
1bc2e979eb
wip; compiles; much commented out
2020-06-26 17:23:20 -04:00
Jeff Epler
05837b2841
sdioio: Add shared-bindings
...
There is no implementation yet.
2020-06-26 11:50:25 -05:00
Jeff Epler
57fde2e07b
sdcardio: implement new library for SD card I/O
...
Testing performed: That a card is successfully mounted on Pygamer with
the built in SD card slot
This module is enabled for most FULL_BUILD boards, but is disabled for
samd21 ("M0"), litex, and pca10100 for various reasons.
2020-06-26 11:50:23 -05:00
Dan Halbert
759929c24a
hci early wip; refactor supervisor bluetooth.c for nrf: tested
2020-06-25 20:57:17 -04:00
Jeff Epler
1d2cc0b968
I2CPeripheral: Rename class and its module
...
This is an incompatible change.
2020-06-25 11:44:19 -05:00
Kamil Tomaszewski
84f424f631
gnss: Implement new library for GNSS
2020-06-24 11:14:44 +02:00
Jeff Epler
a7b36f724f
circuitpy_defns.mk: Sort several lists of source files
...
and regularize whitespace in one spot
2020-06-22 10:45:27 -05:00
Jeff Epler
a580f0f1c4
_pew: move to common-hal
...
I noticed that this code was referring to samd-specific functionality,
and isn't enabled except in one samd board (pewpew10). Move it.
There is incomplte support for _pew in mimxrt10xx which then caused build
errors; adding a #if guard to check for _pew being enabled fixes it.
The _pew module is not likely to be important on mimxrt but I'll leave the
choice to remove it to someone else.
2020-06-22 10:45:27 -05:00
Scott Shawcroft
2fd7a43f2f
Merge remote-tracking branch 'adafruit/master' into wdt-nrf
2020-05-29 10:16:24 -07:00
Scott Shawcroft
796373b8be
A number of small ESP32S2 fixes:
...
* Fix flash writes that don't end on a sector boundary. Fixes #2944
* Fix enum incompatibility with IDF.
* Fix printf output so it goes out debug UART.
* Increase stack size to 8k.
* Fix sleep of less than a tick so it doesn't crash.
2020-05-28 15:43:55 -07:00
Sean Cross
08362c9cab
watchdogtimer: refactor to new api
...
This refactors the WatchDogTimer API to use the format proposed in
https://github.com/adafruit/circuitpython/pull/2933#issuecomment-632268227
Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-27 11:28:49 +08:00
Sean Cross
595f6387c2
watchdog: rename module from wdt
and move to microcontroller
...
This also places it under the `microcontroller` object.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-27 11:28:49 +08:00
Sean Cross
f4719609f7
wdt: add watchdog support
...
This adds shared bindings for a watchdog timer, based on the API
provided by micropython.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-27 11:28:48 +08:00
Scott Shawcroft
7546d47f77
Merge remote-tracking branch 'adafruit/master' into improve_verification
2020-05-13 08:23:55 -07:00
Scott Shawcroft
2efe17bcb7
Don't build in empty help.c
2020-05-12 19:01:17 -07:00
Scott Shawcroft
277e8d528b
Merge branch 'master' into Optical-Encoder-Module
2020-05-12 18:22:57 -07:00
Daniel Pollard
ee2cb703c8
merged master
2020-05-12 14:41:28 +10:00
warriorofwire
206d0e598a
Add vectorio: for drawing shapes
...
vectorio builds on m4 express feather
Concrete shapes are composed into a VectorShape which is put into a displayio Group for display.
VectorShape provides transpose and x/y positioning for shape implementations.
Included Shapes:
* Circle
- A radius; Circle is positioned at its axis in the VectorShape.
- You can freely modify the radius to grow and shrink the circle in-place.
* Polygon
- An ordered list of points.
- Beteween each successive point an edge is inferred. A final edge closing the shape is inferred between the last
point and the first point.
- You can modify the points in a Polygon. The points' coordinate system is relative to (0, 0) so if you'd like a
top-center justified 10x20 rectangle you can do points [(-5, 0), (5, 0), (5, 20), (0, 20)] and your VectorShape
x and y properties will position the rectangle relative to its top center point
* Rectangle
A width and a height.
2020-05-09 15:38:22 -07:00
Sean Cross
b168784fa0
aesio: add basic AES encryption and decryption
...
This adds initial support for an AES module named aesio. This
implementation supports only a subset of AES modes, namely
ECB, CBC, and CTR modes.
Example usage:
```
>>> import aesio
>>>
>>> key = b'Sixteen byte key'
>>> cipher = aesio.AES(key, aesio.MODE_ECB)
>>> output = bytearray(16)
>>> cipher.encrypt_into(b'Circuit Python!!', output)
>>> output
bytearray(b'E\x14\x85\x18\x9a\x9c\r\x95>\xa7kV\xa2`\x8b\n')
>>>
```
This key is 16-bytes, so it uses AES128. If your key is 24- or 32-
bytes long, it will switch to AES192 or AES256 respectively.
This has been tested with many of the official NIST test vectors,
such as those used in `pycryptodome` at
39626a5b01/lib/Crypto/SelfTest/Cipher/test_vectors/AES
CTR has not been tested as NIST does not provide test vectors for it.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-06 17:40:06 +08:00
Daniel Pollard
bfa5cd9c13
refactor countio based on feedback
2020-05-05 15:23:38 +10:00
Scott Shawcroft
bebf27e733
Merge remote-tracking branch 'adafruit/master' into lower_power
...
This isn't perfect and needs a bit more testing.
2020-04-20 18:25:13 -07:00
Jeff Epler
5fcc6d6286
RGBMatrix: finish renaming from Protomatter
...
This gets all the purely internal references. Some uses of
protomatter/Protomatter/PROTOMATTER remain, as they are references
to symbols in the Protomatter C library itself.
2020-04-17 18:44:07 -05:00
Jeff Epler
3d6258f63d
Rename Protomatter -> RGBMatrix
...
This is a quick rename, it changes the user-facing names but not the
internal names of things.
2020-04-17 18:43:57 -05:00
Jeff Epler
a32337718d
Rename _protomatter -> protomatter
...
I originally believed that there would be a wrapper library around it,
like with _pixelbuf; but this proves not to be the case, as there's
too little for the library to do.
2020-04-17 18:43:57 -05:00
Scott Shawcroft
b580b34cbf
Merge remote-tracking branch 'adafruit/master' into lower_power
2020-04-14 17:14:44 -07:00
Jeff Epler
09dc46a984
Add Protomatter and FramebufferDisplay
2020-04-14 18:24:54 -05:00
Scott Shawcroft
c248730bd1
Clean up
2020-04-02 17:36:09 -07:00
Scott Shawcroft
8fe512c7e9
Merge remote-tracking branch 'adafruit/master' into lower_power
2020-03-31 15:13:58 -07:00
Jeff Epler
d6342af980
ulab: rename enable macro so it appears in the support matrix
2020-03-17 09:33:03 -05:00
Scott Shawcroft
48b5f2a384
Initial work on SAMD
2020-03-13 11:16:41 -07:00
Jeff Epler
fa3b9eba92
ulab: Incorporate it
2020-02-27 11:03:03 -06:00
James Bowman
5c6d94d3e5
Split into shared-module and shared-bindings
2020-02-07 10:30:49 -08:00
James Bowman
acef93a253
Rename eveL to _eve, EVEL to _EVE
2020-02-05 18:17:58 -08:00
James Bowman
7fd30e7d20
First draft of eveL, the low-level module of the Gameduino (and BridgeTek EVE) bindings.
...
[adafruit/circuitpython#2578 ]
2020-02-03 16:46:14 -08:00
Scott Shawcroft
a10cd8580c
Merge pull request #2445 from jepler/mp3-jeplayer-fixes
...
Fixes for JEplayer
2020-01-08 12:50:13 -08:00
Jeff Epler
dd6010a17e
Fix more build problems
2020-01-06 13:35:43 -06:00
Scott Shawcroft
82fb761c0f
Add PacketBuffer and MTU negotiation support.
...
PacketBuffer facilitates packet oriented BLE protocols such as BLE
MIDI and the Apple Media Service.
This also adds PHY, MTU and connection event extension negotiation
to speed up data transfer when possible.
2020-01-03 17:29:54 -08:00
Dan Halbert
68ae47907c
merge from upstream
2019-12-10 21:04:46 -05:00
Dan Halbert
013c840862
working on all ports
2019-12-10 20:27:30 -05:00
Jeff Epler
a08d9e6d8e
audiocore: Add MP3File using Adafruit_MP3 library
2019-12-10 14:03:06 -06:00
Dan Halbert
40434d6919
wip
2019-12-05 22:45:53 -05:00
Scott Shawcroft
ae30a1e5aa
Refine _bleio
...
This PR refines the _bleio API. It was originally motivated by
the addition of a new CircuitPython service that enables reading
and modifying files on the device. Moving the BLE lifecycle outside
of the VM motivated a number of changes to remove heap allocations
in some APIs.
It also motivated unifying connection initiation to the Adapter class
rather than the Central and Peripheral classes which have been removed.
Adapter now handles the GAP portion of BLE including advertising, which
has moved but is largely unchanged, and scanning, which has been enhanced
to return an iterator of filtered results.
Once a connection is created (either by us (aka Central) or a remote
device (aka Peripheral)) it is represented by a new Connection class.
This class knows the current connection state and can discover and
instantiate remote Services along with their Characteristics and
Descriptors.
Relates to #586
2019-10-21 18:57:03 -07:00
Dan Halbert
7b79ac3739
Parameterize linker script
2019-10-20 23:50:12 -04:00
sommersoft
b1c3d47413
Merge branch 'master' of https://github.com/adafruit/circuitpython into mixer_voice
2019-09-01 21:16:12 -05:00
sommersoft
8120f5cdad
Merge branch 'master' of https://github.com/adafruit/circuitpython into mixer_voice
2019-08-29 22:14:53 -05:00
Dan Halbert
7a64af9280
rename bleio module to _bleio
2019-08-29 18:44:27 -04:00
Scott Shawcroft
0876d5c4ad
Disable bitbangio on Itsy M0
...
Also, switch CIRCUITPY_BITBANG_APA102 to makefile setting so it can alter included files
2019-08-27 15:21:47 -07:00
sommersoft
df5568d993
move Mixer & MixerVoice from 'audiocore' to 'audiomixer'
2019-08-24 23:36:18 -05:00
sommersoft
b54fd961cb
Merge branch 'master' of https://github.com/adafruit/circuitpython into mixer_voice
2019-08-24 17:14:05 -05:00
Scott Shawcroft
36a23e0fe3
Rework refresh API and factor common display stuff out
...
NOT TESTED! Just compiles
Fixes #1691
2019-08-22 14:23:27 -07:00
Scott Shawcroft
70680d5b22
EPaper displays work mostly.
2019-08-22 14:08:33 -07:00
sommersoft
1b2996a75e
Merge branch 'master' of https://github.com/adafruit/circuitpython into mixer_voice
2019-08-19 21:23:27 -05:00
Dan Halbert
e2a4c76a37
make nrf touchio be generic: now available for SAMD51 too
2019-08-18 08:44:10 -04:00
Dan Halbert
243334da75
Merge remote-tracking branch 'adafruit/master' into ble-pairing
2019-08-05 23:06:24 -04:00
sommersoft
065efb05b7
bring MixerVoice back to building state; update documentation
2019-08-03 11:20:06 -05:00
Dan Halbert
7ce3776b80
WIP: rework of Characteristic properties; enhance Descriptor; not tested
2019-08-02 17:57:31 -04:00
Jeff Epler
b72352949b
PWM audio: Rename AudioOut -> PWMAudioOut, _audioio_ -> _audiopwmio_
2019-07-29 18:39:00 -04:00