Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | add time adjustments to fslibre dump | Ben | 2019-05-05 | 3 | -9/+45 |
| | |||||
* | Bug fix: incorrect argument order in call to construct.Const. | André Caldas | 2019-05-05 | 1 | -1/+1 |
| | |||||
* | Add SPDX license to .dir-locals.el. | Diego Elio Pettenò | 2019-03-31 | 1 | -0/+1 |
| | |||||
* | fslibre: correct the ketone reading. | Diego Elio Pettenò | 2019-03-31 | 1 | -2/+9 |
| | | | | | As discussed in glucometer-protocols #6, the value is actually converted the same way as blood glucose, despite it not having the same ratio. | ||||
* | Replace epydoc metadata with SPDX identifiers. | Diego Elio Pettenò | 2019-02-08 | 27 | -126/+55 |
| | | | | | | | | | | Most of the epydoc metadata (author, copyright, email) is duplicate in the package's setup.py or README. These copies are more likely to get out of date, and increase the amount of work to keep them in line. The license information should rather be provided with an SPDX identifier, which is more similar to what the Linux kernel and other projects, such as pyserial, do. | ||||
* | Replace flameeyes.eu with flameeyes.com. | Diego Elio Pettenò | 2019-02-08 | 28 | -29/+30 |
| | | | | | | | | Due to EURid threatening to suspend my domain, make sure that the references are updated to point at the right stable domain. This includes changes to the files as well as a mailmap to update the author references in the log. | ||||
* | hiddevice: fix support for modern hidapi. | Diego Elio Pettenò | 2019-01-29 | 1 | -3/+3 |
| | | | | | | | The value of None is not valid for current hidapi implementation, but anything below 0 is considered no timeout. Fixes issue #50. | ||||
* | exceptions: avoid using kwargs for message, as it's not correct. | Diego Elio Pettenò | 2019-01-28 | 1 | -2/+2 |
| | | | | Fixes the nested exception reported in Issue #50. | ||||
* | Include the OneTouch Select Plus Flex in the otverio2015 list. | Diego Elio Pettenò | 2018-12-19 | 1 | -16/+18 |
| | | | | Add a note that only the USB connection is supported, not the BlueTooth one. | ||||
* | otverio2015: fix string parsing to include the full prefix. | Diego Elio Pettenò | 2018-12-19 | 1 | -5/+2 |
| | | | | | This caused the normal ASCII-in-UTF16 strings to be misaligned, and the `info` output to be full of garbage. | ||||
* | Fix most of the pylint output, and hide away some that is not needed. | Diego Elio Pettenò | 2018-12-12 | 17 | -202/+228 |
| | | | | Again, this is not ready for CI yet unfortunately :( | ||||
* | Simplify exceptions hierarchy. | Diego Elio Pettenò | 2018-12-12 | 1 | -14/+10 |
| | |||||
* | Reindent all files to match the 4-spaces indentation. | Diego Elio Pettenò | 2018-12-12 | 6 | -630/+630 |
| | |||||
* | hiddevice: split handle_ and hidapi_handle_. | Diego Elio Pettenò | 2018-12-12 | 1 | -9/+15 |
| | | | | This avoids confusing mypy, and is also less magical. | ||||
* | Sprinkle more type annotations throughout the codebase. | Diego Elio Pettenò | 2018-12-12 | 6 | -7/+30 |
| | |||||
* | Fix indentation of common.py. | Diego Elio Pettenò | 2018-12-12 | 1 | -83/+86 |
| | |||||
* | Make GlucoseReading and KetoneReading use attrs, too. | Diego Elio Pettenò | 2018-12-12 | 1 | -44/+24 |
| | | | | This also adds more type annotations for them. | ||||
* | Remove --sort-by flag. | Diego Elio Pettenò | 2018-12-12 | 1 | -9/+1 |
| | | | | | | There's nothing really meaningful beside the timestamp sorting, remove the flag. If for whatever analysis, a different sorting is needed, that should be post-processed from the generated CSV. | ||||
* | Experimentally start adding type annotations, and mypy configs. | Diego Elio Pettenò | 2018-12-12 | 5 | -13/+38 |
| | | | | | This cannot currently be added to CI because the lack of `construct` stubs, which cause "unsupported left operands" for /-constructed structs. | ||||
* | otverio2015: fix one remaining entry referencing the now-gone COMMAND_SUCCESS constant. | Diego Elio Pettenò | 2018-12-12 | 1 | -1/+1 |
| | |||||
* | Use [attrs](http://www.attrs.org/) instead of namedtuple for MeterInfo. | Diego Elio Pettenò | 2018-12-12 | 2 | -18/+21 |
| | | | | This avoids having the separate _MeterInfoBase class, and reads much nicer. | ||||
* | sdcodefree: allows an arbitrary number of null-bytes before challenge. | Diego Elio Pettenò | 2018-12-09 | 1 | -6/+9 |
| | | | | This appears to be quite variable, and this should make it more reliable. | ||||
* | Travis: make dist xenial for python 3.7 support | Diego Elio Pettenò | 2018-11-16 | 1 | -0/+2 |
| | | | | CC travis-ci/travis-ci#9815 | ||||
* | Travis: add Python 3.7 support. | Diego Elio Pettenò | 2018-11-16 | 1 | -0/+1 |
| | |||||
* | tests: simplify and cleanup. | Diego Elio Pettenò | 2018-11-16 | 6 | -41/+26 |
| | | | | | | | | | | * Remove the __main__ blocks as the tests should not be executable by themselves. * Use absltest everywhere instead of a mixture of unittest/absltest (via parameterized). * Only modify import path once. * Cleanup pylint warnings, by disabling those that are not useful, and fixing those that are. | ||||
* | otultraeasy: factor out the packet creation, and add tests. | Diego Elio Pettenò | 2018-11-16 | 2 | -10/+49 |
| | | | | | This would have caught the bug fixed with the previous commit, which is a strict improvement. | ||||
* | Don't fold the command prefix into the LifeScanPacket. | Diego Elio Pettenò | 2018-11-16 | 4 | -53/+53 |
| | | | | | | | For the otultraeasy, there is no prefix provided in the acks at all, so the previous change broke the otultraeasy. Partial revert of b5784bb35b9968bf977d1319c3301958d671f45c. | ||||
* | test-requirements: add some minimum version specifications. | Diego Elio Pettenò | 2018-07-24 | 1 | -3/+3 |
| | |||||
* | Fix sdcodefree driver, the same as the lifescan changes. | Diego Elio Pettenò | 2018-07-24 | 1 | -1/+1 |
| | | | | Thanks to Noel Cragg for reporting this. | ||||
* | fix invalid self-reference | Noel Cragg | 2018-07-24 | 1 | -1/+1 |
| | | | | | | | During the structure rebuild, the 'message' key is removed before its callback is invoked, causing 'this.message' to raise a nonexistent key error. This change reverts the line in question to its pre-84aad729 logic (but leaving the variable name substitutions in place). | ||||
* | change 999 to inf | Wesley T. Honeycutt | 2018-05-23 | 1 | -1/+1 |
| | |||||
* | Fix for non-integer errors | Wesley T. Honeycutt | 2018-05-23 | 1 | -1/+5 |
| | | | This is a quick fix I used to address an error for "HI" readings on my unit. This comes up when testing inhuman blood. There may be a "LO", but I have not encountered it, so I do not know how the specifics of it. This error may come up on other units, but I have just done something about the hardware I have access to. | ||||
* | Add double quotes according to @arvchristos suggestion on 'Example Usage' section | Naokazu Terada | 2018-04-17 | 1 | -1/+1 |
| | |||||
* | freestyle support: add debug logging of commands sent and received. | Diego Elio Pettenò | 2018-03-17 | 1 | -0/+4 |
| | |||||
* | fsoptium: add debug logging when sending commands. | Diego Elio Pettenò | 2018-03-17 | 1 | -0/+4 |
| | |||||
* | Update lifescan_binary_protocol.py | Arkadiusz Bulski | 2018-03-17 | 1 | -2/+2 |
| | | | lambdafied this expression | ||||
* | Update sdcodefree.py | Arkadiusz Bulski | 2018-03-17 | 1 | -2/+2 |
| | | | lambdafied this expression | ||||
* | CString supports UTF-16/32-LE/BE | Arkadiusz Bulski | 2018-03-17 | 1 | -2/+1 |
| | |||||
* | SymmetricMapping was renamed to Mapping | Arkadiusz Bulski | 2018-03-17 | 4 | -5/+5 |
| | |||||
* | corected timestamp comment | Arkadiusz Bulski | 2018-03-17 | 1 | -1/+1 |
| | |||||
* | construct code fixed improper embedding | Arkadiusz Bulski | 2018-03-17 | 4 | -15/+13 |
| | |||||
* | construct-code is (almost) uptodate | Arkadiusz Bulski | 2018-03-17 | 6 | -16/+17 |
| | |||||
* | construct: the construct API is significantly unstable, fix to 2.8.22 only. | Diego Elio Pettenò | 2018-02-11 | 3 | -9/+9 |
| | | | | | This still is required to fix Issue #38, but luckily it's just a test failure for now. | ||||
* | Until Issue #38 is fixed, expect construct 2.8, and not 2.9. | Diego Elio Pettenò | 2018-02-11 | 2 | -8/+8 |
| | | | | | | The API changed in slightly incompatible ways so I'll have some work to make sure this works on both versions (and that there is some test around it, possibly). | ||||
* | otverioiq: remove untested marking and list supported features. | Diego Elio Pettenò | 2018-01-07 | 2 | -4/+10 |
| | | | | This closes Issue #30 as I actually tested this and it works perfectly fine. | ||||
* | otverioiq: zero log is tested, it works. | Diego Elio Pettenò | 2018-01-07 | 1 | -1/+1 |
| | |||||
* | otverioiq: fix up set_datetime method. | Diego Elio Pettenò | 2018-01-07 | 1 | -2/+4 |
| | |||||
* | otverioiq: fix definition of the reading response, fix get_reading_count method. | Diego Elio Pettenò | 2018-01-07 | 1 | -5/+3 |
| | |||||
* | otverioiq: fix up a couple of syntax errors, and update baud rate. | Diego Elio Pettenò | 2018-01-07 | 1 | -3/+3 |
| | |||||
* | otverioiq: fix up syntax. | Diego Elio Pettenò | 2018-01-07 | 1 | -6/+4 |
| | |||||
* | otverioiq: fix typo. | Diego Elio Pettenò | 2018-01-07 | 1 | -1/+1 |
| | |||||
* | otverioiq: add to the list and to the dependency file. | Diego Elio Pettenò | 2018-01-07 | 2 | -0/+2 |
| | | | | | As noted in Issue #30, this is currently untested, but I'm confident it won't take much to get it to working state. | ||||
* | otverioiq: implement full parsing of the response structure. | Diego Elio Pettenò | 2018-01-07 | 1 | -3/+19 |
| | | | | | | The TidePool driver does not implement meal comment and it does not validate the full message. I checked the flags with the trace and they match the values in otverio2015. | ||||
* | otverioiq: link-control is not used. | Diego Elio Pettenò | 2018-01-07 | 1 | -1/+1 |
| | |||||
* | lifescan binary protocol: factor out _COMMAND_SUCCESS. | Diego Elio Pettenò | 2018-01-07 | 4 | -26/+27 |
| | | | | The success status is always %x06 if there is a message at all. | ||||
* | otverioiq: update version and serial number requests. | Diego Elio Pettenò | 2018-01-06 | 1 | -2/+4 |
| | | | | | These are now coming from the software trace. The version response is funny though. | ||||
* | lifescan binary protocol: make the packet generator a function. | Diego Elio Pettenò | 2018-01-06 | 4 | -56/+65 |
| | | | | | | | | | | | | | | This ensures that the command prefix is added directly into the packet structure, simplifying the rest of the code. Per driver changes: - otverio2015: command prefix is changed from 0x04 to 0x03; this ensures that all the responses share the same prefix (READ RECORD COUNT does not repeat the selected command prefix). - otverioiq: command prefix is changed from 0x04 to 0x03, to align with the otverio2015 driver and the trace from OneTouch Diabetes Management Software. | ||||
* | otultraeasy: fix AttributeErrors after factoring out link_control struct. | Diego Elio Pettenò | 2018-01-06 | 1 | -4/+5 |
| | |||||
* | otverioiq: add totally untested driver. | Diego Elio Pettenò | 2018-01-06 | 1 | -0/+194 |
| | | | | | | | | | | This is the first commit to support OneTouch Verio IQ (Issue #30). It's untested despite me having the device because it needs a new kernel I have not planned to build yet. Most of the protocol has been reverse engineered from the Tidepool driver (https://github.com/tidepool-org/chrome-uploader/blob/master/lib/drivers/onetouch/oneTouchVerioIQ.js) with a few assumption brought in from the UltraEasy and Verio 2015. | ||||
* | lifescan_binary_protocol: factor out glucose unit mappings. | Diego Elio Pettenò | 2018-01-06 | 3 | -13/+11 |
| | | | | | The values are the same between all models sharing this protocol, even though the full reply message isn't. | ||||
* | lifescan_binary_protocol: create a new module to support LifeScan drivers. | Diego Elio Pettenò | 2018-01-06 | 3 | -60/+73 |
| | | | | | | | | | | Both the UltraEasy and Verio 2015 use a similar protocol, with the same base packet serialised to the device. Factor the packet definition out (and make it a bit more generic). Verio IQ (Issue #30) also shares the same base protocol. Also move the definition of VERIO_TIMESTAMP to this common module as it's also shared with the Verio IQ. | ||||
* | tests: improve code quality by passing the linter. | Diego Elio Pettenò | 2018-01-01 | 3 | -6/+7 |
| | |||||
* | test_lifescan: rename from test_otultraeasy, and cleanup. | Diego Elio Pettenò | 2018-01-01 | 1 | -12/+1 |
| | | | | | This test was actually only testing the CRC CCITT implementation now that otultraeasy uses construct. | ||||
* | otverio2015: reorder functions to match otultraeasy. | Diego Elio Pettenò | 2018-01-01 | 1 | -5/+5 |
| | |||||
* | otultraeasy: merge _send_request and _read_response and match otverio2015. | Diego Elio Pettenò | 2018-01-01 | 1 | -41/+35 |
| | | | | | | | | | There was always a 1-to-1 mapping between these two functions, so merge them into a single function that knows both the request and response format. It also includes some refactoring of the actual record reading, to match the same structure of functions in otverio2015. | ||||
* | otultraeasy: rename _ZERO_LOG_REQUEST to _MEMORY_ERASE_REQUEST. | Diego Elio Pettenò | 2018-01-01 | 1 | -2/+2 |
| | | | | This makes it the same as the otverio2015. | ||||
* | otultraeasy: wrap around construct exceptions to MalformedCommand. | Diego Elio Pettenò | 2018-01-01 | 1 | -11/+20 |
| | |||||
* | otverio2015: rewrite using construct. | Diego Elio Pettenò | 2018-01-01 | 3 | -236/+232 |
| | | | | | | | This simplifies the code a bit here and there, making sure that the structures are all define at the top of the file. It also align the structure of the driver a bit more with otultraeasy, making it easier to spot the similitudes. | ||||
* | otultraeasy: factor out the construct Timestamp implementation. | Diego Elio Pettenò | 2018-01-01 | 4 | -13/+115 |
| | | | | | | | This adds tests to ensure this works right in the general case, so that it can be used with different parameters. The adapter will be reused in the otverio2015 driver. | ||||
* | otultraeasy: rewrite using construct for parsing. | Diego Elio Pettenò | 2018-01-01 | 4 | -277/+201 |
| | | | | | | | | | This removes the wholly complicated _Packet() object and replace it with more readable construct. Unfortunately this appears to reduce performance because of the serial stream buffering, needed to calculate the checksum. It's unfortunate, but it at least avoids a significant amount of custom code. | ||||
* | sdcodefree: rewrite using construct and improve readability. | Diego Elio Pettenò | 2017-12-31 | 3 | -103/+94 |
| | | | | | | | This replaces the use of manual structures with well-defined construct entries; it also give consistency to packet vs message. Log input and output messages, to be clearer. | ||||
* | serial devices: disable xonxoff by default. | Diego Elio Pettenò | 2017-12-31 | 1 | -1/+1 |
| | | | | | | | | | | With 2a825fb889735fa881566d1764cc48d2814447d2 the parameters to open the serial device were lifted from the fsoptium driver, which was the only one passing xonxoff=True. The Optium device has no problem with disabling this feature, but the codefree driver hangs if this is set to True. So instead set it to False and get rid of it. | ||||
* | freestyle: rename miscopied constant name. | Diego Elio Pettenò | 2017-12-30 | 1 | -2/+2 |
| | |||||
* | Run test and build on Travis CI | Muhammad Kaisar Arkhan | 2017-12-30 | 2 | -0/+16 |
| | | | | Closes https://github.com/Flameeyes/glucometerutils/issues/35 | ||||
* | Use pytest to run tests | Muhammad Kaisar Arkhan | 2017-12-30 | 4 | -1/+41 |
| | | | | Closes https://github.com/Flameeyes/glucometerutils/issues/34 | ||||
* | Add more tests to cover the basic translation of objects to strings. | Diego Elio Pettenò | 2017-12-29 | 1 | -0/+74 |
| | | | | | This would have found an extra bug that was pushed unfixed after enum conversion, and two bugs that I did find during the conversion. | ||||
* | Fix error in meter info output, after conversion of Unit to enum. | Diego Elio Pettenò | 2017-12-29 | 1 | -1/+1 |
| | |||||
* | Fix dependency name for absl-py. | Diego Elio Pettenò | 2017-12-28 | 1 | -1/+1 |
| | |||||
* | freestyle: replace the custom struct and bytemangling with construct. | Diego Elio Pettenò | 2017-12-28 | 3 | -26/+30 |
| | | | | | | | | This simplifies the code and enforces the validation within the format documentation too. construct can handle the full package verification, including dealing with padding. | ||||
* | deps: correct dependency for fsoptium. | Diego Elio Pettenò | 2017-12-28 | 1 | -1/+1 |
| | |||||
* | Add driver dependencies to setup.py, and document how to install this. | Diego Elio Pettenò | 2017-12-28 | 2 | -0/+25 |
| | | | | | | | | This should address Issue 5 (theoretically some of the dependencies are OS-specific but that's a longer problem). Also partially addresses Issue 9 because now we have an easy to understand "install and try out" option. | ||||
* | Rewrite setup.py to use setuptools. | Diego Elio Pettenò | 2017-12-28 | 1 | -22/+33 |
| | | | | This should make it easier to add dependencies and so on. | ||||
* | Rename the shim to match the old name. | Diego Elio Pettenò | 2017-12-28 | 1 | -0/+0 |
| | |||||
* | Move the binary script to glucometerutils/ and create a starting shim. | Diego Elio Pettenò | 2017-12-28 | 2 | -3/+7 |
| | | | | The shim needs to be renamed, but this makes the history simpler to read. | ||||
* | Remove misleading MANIFEST template. | Diego Elio Pettenò | 2017-12-28 | 1 | -1/+0 |
| | |||||
* | Update Python version target in the README as well. | Diego Elio Pettenò | 2017-12-28 | 1 | -1/+1 |
| | |||||
* | Update documentation to be more useful. | Diego Elio Pettenò | 2017-12-28 | 1 | -13/+21 |
| | |||||
* | test: use byte constants instead of encoding on the fly. | Diego Elio Pettenò | 2017-12-28 | 1 | -2/+2 |
| | |||||
* | tests: fix OneTouch tests to use Python's own mock, and leverage absl-py. | Diego Elio Pettenò | 2017-12-28 | 2 | -53/+26 |
| | | | | | | Since I've increased the minimum Python version to 3.4, mock is now available within Python. And since I already used absl-py parameterized for test_common, make use of it to avoid boilerplate. | ||||
* | Fix up link to the site. | Diego Elio Pettenò | 2017-12-28 | 1 | -1/+1 |
| | |||||
* | test_common: use absl-py to increase coverage, and simplify. | Diego Elio Pettenò | 2017-12-28 | 1 | -8/+23 |
| | | | | This ensures the tests run independently instead of failing at the first mistake. | ||||
* | accucheck_reports: fix bug for mg/dL native meters. | Diego Elio Pettenò | 2017-12-28 | 3 | -17/+11 |
| | | | | | This was mixing up the units in the conversion. While fixing the bug, remove the confusing two-parameter form of convert_glucose_unit. | ||||
* | Use Python3 Enum class for measurement methods. | Diego Elio Pettenò | 2017-12-28 | 2 | -10/+11 |
| | | | | This makes the code more idiomatic and less brittle. | ||||
* | Use Python3 Enum class for meal flags. | Diego Elio Pettenò | 2017-12-28 | 5 | -18/+19 |
| | | | | This makes the code more idiomatic and less brittle. | ||||
* | Use Python3 Enum class for glucose units. | Diego Elio Pettenò | 2017-12-28 | 12 | -43/+36 |
| | | | | This makes the code more idiomatic and less brittle. | ||||
* | Raise minimum Python version to 3.4, to allow using the enum module. | Diego Elio Pettenò | 2017-12-28 | 2 | -2/+3 |
| | | | | | Supporting older Python is becoming harder, and modern Python is more readable, particularly as it allows for less brittle code. | ||||
* | otultraeasy: fix wrong module name for shared lifescan code. | Diego Elio Pettenò | 2017-11-14 | 1 | -4/+4 |
| | | | | | | | This was meant to be lifescan_common, and then renamed to just lifescan, but clearly I forgot that. Addresses part of Issue #29. | ||||
* | Fix with_ketone | Leonard Lausen | 2017-10-02 | 4 | -9/+4 |
| | |||||
* | Fix ketone reading | Leonard Lausen | 2017-10-02 | 4 | -4/+9 |
| | |||||
* | Fix syntax error in fsprecisionneo.py | Leonard Lausen | 2017-10-01 | 1 | -1/+1 |
| | |||||
* | glucometer.py: add --with-ketone option to the dump action | Samuel Martin | 2017-09-25 | 1 | -0/+7 |
| | |||||
* | fsprecisionneo: add ketone reading support | Samuel Martin | 2017-09-25 | 1 | -8/+19 |
| | |||||
* | fslibre: add ketone reading support | Samuel Martin | 2017-09-25 | 1 | -4/+24 |
| | |||||
* | fslibre: set measure_method when parsing records | Samuel Martin | 2017-09-25 | 1 | -2/+7 |
| | |||||
* | common: introduce the KetoneReading class | Samuel Martin | 2017-09-25 | 1 | -3/+32 |
| | | | | | This change also remove the meal field from the _ReadingBase class and moves it only where it belongs, i.e. in the GlucoseReading class. | ||||
* | common: rename Reading class into GlucoseReading class | Samuel Martin | 2017-09-25 | 10 | -12/+12 |
| | | | | This renaming prepares for the ketone class introduction. | ||||
* | glucometer.py: restrict sorting choices to the common reading fields | Samuel Martin | 2017-09-25 | 1 | -1/+1 |
| | | | | | This change mainly aims to avoid breaking the glucometer.py script when introducing the ketone reading in the following patches. | ||||
* | common: add measure_method field to _ReadingBase class | Samuel Martin | 2017-09-25 | 1 | -5/+10 |
| | | | | | This new measure_method stores origin of the measure (either blood sample or from a CGM sensor). | ||||
* | common: add constants for measure methods | Samuel Martin | 2017-09-25 | 1 | -0/+4 |
| | |||||
* | fslibre: fix reading-type comment | Samuel Martin | 2017-09-25 | 1 | -1/+1 |
| | |||||
* | add udev rules | Samuel Martin | 2017-09-25 | 1 | -0/+30 |
| | |||||
* | fslibre: fix insulin display | Samuel Martin | 2017-09-13 | 1 | -4/+4 |
| | | | | | | | | | | | One of the professional options allows to choose the insulin increment step between 1 and 0.5 unit. This explains why the insulin dose values with no decimal part seems doubled in memory. This change adjusts the formating and computation when displaying these data. | ||||
* | otverio2015: fix _MEAL_CODES map. | Diego Elio Pettenò | 2017-09-13 | 1 | -3/+3 |
| | | | | The unpacked value is an integer, not a byte array anymore. | ||||
* | otverio2015: expose pre-/post-meal flags for Select Plus devices. | Diego Elio Pettenò | 2017-09-13 | 1 | -7/+15 |
| | | | | | While Verio 2015 does not appear to expose this information, Select Plus devices do, and the mapping is very simple. | ||||
* | otverio2015: fix readings on Select Plus readers (Issue #22). | Diego Elio Pettenò | 2017-09-13 | 1 | -3/+4 |
| | | | | | | The reading value is only 16-bit long, not 32-bit. The following byte is a meal indicator (not implemented in Verio), followed by a (likely) constant 0x00. | ||||
* | otverio2015: add debug logging to help track Issue #22. | Diego Elio Pettenò | 2017-09-13 | 1 | -2/+8 |
| | |||||
* | Remove the gdef submodule import. | Diego Elio Pettenò | 2017-09-04 | 2 | -3/+0 |
| | | | | | The gdef project should be considered deprecated. Instead we should implement the TidePool data model: http://developer.tidepool.org/data-model/device-data/ | ||||
* | Tested with FreeStyle Optium Neo | Warren Moore | 2017-07-24 | 1 | -1/+1 |
| | |||||
* | Fix typo on import statement | Ryan Jarvis | 2017-06-24 | 1 | -1/+1 |
| | |||||
* | Use python3 in the shebang to mark this as not Python 2-compatible. | Diego Elio Pettenò | 2017-06-18 | 1 | -1/+1 |
| | | | | | Thanks to DorianScholz for pointing this out in pull request #14, and pointing me at https://www.python.org/dev/peps/pep-0394/. | ||||
* | Raise an exception right away if the Python version is unsupported. | Diego Elio Pettenò | 2017-06-15 | 1 | -0/+4 |
| | | | | | | | | As suggested by @DorianScholz in pull request #14. Use 3.2 as minimum version since that's what I originally targeted. I wonder if there is an easy way to track which features the code is relying upon to keep this up to date. | ||||
* | freestyle: add some debugging information. | Diego Elio Pettenò | 2017-06-15 | 1 | -0/+3 |
| | |||||
* | hiddevice: default to no timeout, like before. | Diego Elio Pettenò | 2017-06-15 | 1 | -5/+5 |
| | | | | | This restores the original behaviour, that seems to be necessary for the FreeStyle devices. | ||||
* | fsprecisionneo: FreeStyle Optium Neo H has been tested working | Diego Elio Pettenò | 2017-06-07 | 1 | -1/+1 |
| | |||||
* | hiddevice: make hidapi calls take a timeout, default to 1 second. | Diego Elio Pettenò | 2017-06-06 | 1 | -1/+8 |
| | | | | | This is important for a meter I'm working on right now, as there is no obvious way to tell whether to wait for new packets or not. | ||||
* | Add new model name to list of supported devices. | Diego Elio Pettenò | 2017-06-05 | 1 | -0/+1 |
| | |||||
* | Update message and fix line length. | Diego Elio Pettenò | 2017-06-05 | 1 | -1/+2 |
| | |||||
* | hiddevice: add a 1-second timeout to reads. | Diego Elio Pettenò | 2017-06-05 | 1 | -1/+6 |
| | | | | This is a semantics difference between hidraw and HIDAPI, cover for it. | ||||
* | Add a ne support class for HID-based devices. | Diego Elio Pettenò | 2017-06-04 | 3 | -36/+90 |
| | | | | | I'm currently implementing a separate HID-based driver that does not use the Abbott protocol, so this makes my life easier. | ||||
* | Abbott devices: add support for using hidapi library. | Diego Elio Pettenò | 2017-06-03 | 6 | -14/+49 |
| | | | | | | | | | This allows these drivers to be used on operating systems other than Linux, as hidapi abstracts away the access. The interface is similar enough to using hidraw that the actual code only needed minimal changes. Maintain the ability to access the devices with the hidraw path too, without forcing the dependency. | ||||
* | Merge pull request #13 from DorianScholz/make_dateutil_optional | Diego Elio Pettenò | 2017-05-30 | 1 | -2/+4 |
|\ | | | | | Make dateutil optional: | ||||
| * | Make dateutil optional: | Dorian Scholz | 2017-05-30 | 1 | -2/+4 |
| | | | | | | | | - import it only when user sets a date from a date string | ||||
* | | Merge pull request #12 from DorianScholz/show_import_error | Diego Elio Pettenò | 2017-05-30 | 1 | -3/+3 |
|\ \ | | | | | | | Show import error when loading driver, so the actual cause of the pro… | ||||
| * | | Show import error when loading driver, so the actual cause of the problem can be seen | Dorian Scholz | 2017-05-30 | 1 | -3/+3 |
| |/ | |||||
* | | Merge pull request #11 from DorianScholz/fix_encoding_info | Diego Elio Pettenò | 2017-05-30 | 3 | -0/+2 |
|\ \ | | | | | | | Fix encoding info and add missing __init__.py file | ||||
| * | | Fix encoding info and add missing __init__.py file | Dorian Scholz | 2017-05-30 | 3 | -0/+2 |
| |/ | |||||
* | | Merge pull request #10 from DorianScholz/fix_fslibre_parsing | Diego Elio Pettenò | 2017-05-30 | 1 | -5/+9 |
|\ \ | |/ |/| | Fix IndexError and KeyError: double-rapid-acting-insulin | ||||
| * | Fix IndexError and KeyError: | Dorian Scholz | 2017-05-30 | 1 | -5/+9 |
|/ | | | | even if rapid-acting-flag is set double-rapid-acting-insulin record does not always exist, so make it optional and provide a default value | ||||
* | Add the Optium Neo as an untested supported device. | Diego Elio Pettenò | 2017-04-17 | 1 | -1/+4 |
| | |||||
* | All drivers: move documentation of features from README to docstring. | Diego Elio Pettenò | 2017-04-17 | 9 | -44/+101 |
| | | | | | | | | This allows the drivers to keep up to date with what they support and need. Should make Issue #9 easier to solve. Also merge the dependency list with the list of supported devices, so that you don't have to join the two tables in your head. | ||||
* | Add support for a "help" action that prints the driver module's docstring. | Diego Elio Pettenò | 2017-04-17 | 2 | -1/+24 |
| | | | | | | | | This allows the drivers to provide information on what they support directly, rather than relying on the README file. It also allows to provide further information for the quirkier devices. This is again trying to resolve Issue #9. | ||||
* | Serial drivers: factor out opening of the serial port to a new base class. | Diego Elio Pettenò | 2017-04-17 | 5 | -49/+85 |
| | | | | | | This allows the serial support class to open the serial port without each driver having to pass the same long list of parameters, given that effectively all the meters use the same parameters, except few. | ||||
* | Remove unused constants. | Diego Elio Pettenò | 2017-04-15 | 1 | -4/+0 |
| | |||||
* | serial drivers: if no --device parameter is given, look for default cable. | Diego Elio Pettenò | 2017-04-15 | 4 | -21/+21 |
| | | | | | | | | pyserial makes it very easy to look for a serial port based on VID/PID pairs, so use those when possible. Unfortunately serial drivers are also the least reliable as all of the cables but Abbott's use generic IDs. This keeps in the direction of solving Issue 9. | ||||
* | fsoptium: use logging instead of writing to stderr directly. | Diego Elio Pettenò | 2017-04-15 | 1 | -3/+2 |
| | |||||
* | glucometer: make the error fatal and more clear when setting an invalid date. | Diego Elio Pettenò | 2017-04-15 | 1 | -2/+4 |
| | |||||
* | glucometer: log a better error if the driver name is not found. | Diego Elio Pettenò | 2017-04-15 | 1 | -1/+8 |
| | |||||
* | all drivers: make --device optional at the tool level. | Diego Elio Pettenò | 2017-04-15 | 9 | -2/+45 |
| | | | | | | | | This requires the drivers to validate their device, but also means they can provide a more explicit error message for the user as to what should be passed. This is a first step to help solving Issue 9. | ||||
* | Add a --vlog option to enable verbose logging. | Diego Elio Pettenò | 2017-02-25 | 1 | -0/+8 |
| | | | | | This helps adding debug information to drivers, particularly those sending encoded messages. | ||||
* | fslibre: parse and output the scan and blood tests. | Diego Elio Pettenò | 2017-02-24 | 1 | -19/+137 |
| | | | | | This adds some very free-form comments to note where the reading comes from and to convert the flags into something that the user can use. | ||||
* | fslibre: new driver for Abbott FreeStyle Libre download. | Diego Elio Pettenò | 2017-02-23 | 2 | -0/+75 |
| | | | | | | | | This is the first (draft) version of the driver, that only downloads the automatic sensor readings, marking them as (Sensor) in the comments. I'll follow up with downloading of the scans and blood tests, but wanted to have this pushed first. | ||||
* | sdcodefree: reformat and cleanup. | Diego Elio Pettenò | 2017-02-09 | 1 | -135/+138 |
| | |||||
* | Merge pull request #8 from gonzojive/master | Diego Elio Pettenò | 2017-01-20 | 1 | -1/+1 |
|\ | | | | | Include glucometerutils.support in setup.py. | ||||
| * | Include glucometerutils.support in setup.py. | Red Daly | 2017-01-20 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #7 from gonzojive/master | Diego Elio Pettenò | 2017-01-20 | 1 | -1/+1 |
|\| | | | | | Open OneTouch Verio devices in readwrite mode by default. | ||||
| * | Open OneTouch Verio devices in readwrite mode by default. | Red Daly | 2017-01-20 | 1 | -1/+1 |
|/ | | | | | | | | | Opening the device with read+write permissions is necessary to send write10 SCSI commands. The error message I was receiving was "SG_IO ioctl error; Operation not permitted" when running as non-root. http://sg.danny.cz/sg/sg_io.html describes SCSI permissions in greater depth and helped illuminate the nature of the permissions problem. | ||||
* | freestyle: error out if hidraw device does not exist. | Diego Elio Pettenò | 2017-01-17 | 1 | -0/+4 |
| | | | | This avoids creating a binary file when running the tool as root (bad Flameeyes). | ||||
* | fsinsulinx: add untested FreeStyle InsuLinx driver. | Diego Elio Pettenò | 2017-01-17 | 2 | -1/+68 |
| | | | | | | | | | | This is based off the fsprecisionneo driver, as the two share an almost identical protocol. The readings format is different between them, but otherwise the commands are compatible. There are a number of higher-level commands that differ between them, though, so it might be necessary to specialize the drivers further in the future. | ||||
* | fsprecisionneo: move the version and serial number information to the common support class. | Diego Elio Pettenò | 2017-01-17 | 2 | -10/+10 |
| | |||||
* | fsprecisionneo: fix mistake in readings dump command. | Diego Elio Pettenò | 2017-01-17 | 1 | -1/+1 |
| | |||||
* | freestyle: improve error message on command failure, fix comment. | Diego Elio Pettenò | 2017-01-17 | 1 | -2/+2 |
| | |||||
* | freestyle: raise NotImplementedError when trying to zero-log. | Diego Elio Pettenò | 2017-01-17 | 1 | -0/+4 |
| | |||||
* | fsprecisionneo: add support for setting date and time. | Diego Elio Pettenò | 2017-01-17 | 2 | -16/+30 |
| | | | | | | There are shared commands that allow settings the date and time of the device, implement those in the freestyle support module, so that they can be re-used in implementation of the same base protocol. | ||||
* | Update copyrights, cleanup whitespace where needed. | Diego Elio Pettenò | 2017-01-16 | 9 | -13/+22 |
| | |||||
* | Fix README to share the same Markdown syntax. | Diego Elio Pettenò | 2017-01-16 | 1 | -10/+6 |
| | |||||
* | Add new driver for the Abbott FreeStyle Precision Neo. | Diego Elio Pettenò | 2017-01-16 | 3 | -11/+271 |
| | | | | | This driver uses the HID-based protocol which is shared among different devices. | ||||
* | Rename freestyle_optium to fsoptium. | Diego Elio Pettenò | 2017-01-16 | 2 | -3/+3 |
| | | | | | The number of freestyle devices drivers will soon skyrocket, use the same shortening as the OneTouch ones. | ||||
* | LifeScan devices: move lifescan_common to the support directory. | Diego Elio Pettenò | 2017-01-16 | 6 | -25/+25 |
| | | | | | This makes it easier to figure out which files represent drivers, and which ones are per-vendor support modules. | ||||
* | Add an emacs local configuration file. | Diego Elio Pettenò | 2017-01-16 | 1 | -0/+4 |
| | |||||
* | Move the readings-to-csv conversion to the Reading class. | Diego Elio Pettenò | 2017-01-15 | 2 | -3/+7 |
| | |||||
* | Fetch the device information in all commands. | Diego Elio Pettenò | 2017-01-15 | 1 | -4/+6 |
| | | | | It's usually cheap and can provide assurance the device is connected and the right type. | ||||
* | Wrap the meter information to a namedtuple, instead of a string. | Diego Elio Pettenò | 2017-01-15 | 8 | -57/+78 |
| | | | | | | This matches the gdef MeterInfo message, and produces a similar (though not identical) string as before. Importantly, it allows providing semantic information. | ||||
* | Add a submodule pointing at gdef, to start implementing gdef export. | Diego Elio Pettenò | 2017-01-15 | 2 | -0/+3 |
| | | | | For now there is nothing using gdef, so this submodule does not need to be implemented. | ||||
* | Merge pull request #6 from lgp171188/map_func_call_fix | Diego Elio Pettenò | 2016-11-17 | 1 | -2/+2 |
|\ | | | | | Fix error in call to map() function | ||||
| * | Fix error in call to map() function | L. Guruprasad | 2016-11-16 | 1 | -2/+2 |
|/ | |||||
* | freestyle_optium: ignore β-ketones results from dumps. | Diego Elio Pettenò | 2016-08-31 | 1 | -4/+7 |
| | | | | | Since there is no way to expose non-glucose readings right now (I might work on that in the future), filter β-ketones results out from the dump. | ||||
* | freestyle_optium: fix reversed parameters to map(). | Diego Elio Pettenò | 2016-08-31 | 1 | -1/+1 |
| | | | | Not sure how this ever worked. | ||||
* | freestyle_optium: remove debugging print. | Diego Elio Pettenò | 2016-08-31 | 1 | -1/+0 |
| | |||||
* | sdcodefree: fix brainfart in README. | Diego Elio Pettenò | 2016-06-19 | 1 | -1/+1 |
| | |||||
* | sdcodefree: new driver. | Diego Elio Pettenò | 2016-06-19 | 2 | -0/+193 |
| | | | | | This driver supports SD Codefree readers, that are sold in the UK by HomeHealth UK. | ||||
* | otverio2015: fix date/time handling, which was broken outside of UTC. | Diego Elio Pettenò | 2016-05-21 | 1 | -1/+1 |
| | |||||
* | otverio2015: implement proper glucose unit identification. | Diego Elio Pettenò | 2016-05-21 | 1 | -3/+22 |
| | | | | | I managed to get my hands on an US-edition of the device, and I can confirm this behaves in a similar way to the otultraeasy. | ||||
* | Add backup files to .gitignore. | Diego Elio Pettenò | 2016-03-02 | 1 | -0/+1 |
| | |||||
* | Use a more Pythonic map(..., int) instead of list comprehension. | Diego Elio Pettenò | 2016-03-02 | 2 | -4/+4 |
| | |||||
* | Move the InvalidChecksum exception to the base exceptions module. | Diego Elio Pettenò | 2016-03-02 | 8 | -23/+15 |
| | | | | | Most glucometers have *some* sort of checksum, so there is no reason to implement this on a per-driver basis. | ||||
* | accuchek_reports: add a new driver for Accu-Chek Mobile meters. | Diego Elio Pettenò | 2016-02-15 | 2 | -0/+131 |
| | | | | | | | | | The default USB connection provides a USB storage device with a CSV datafile. This driver works by looking for that file and importing it. This does not support setting the time, nor reading the actual device time, but it is at least a good way to import data from different meters under the same format. | ||||
* | doc: use tables for devices, drivers, features and dependencies. | Diego Elio Pettenò | 2016-02-15 | 1 | -13/+33 |
| | | | | | This should provide more information on the devices themselves, particularly now that different levels of features are available. | ||||
* | otultra2: make the before/after meal constants in common module. | Diego Elio Pettenò | 2016-02-15 | 2 | -4/+9 |
| | | | | This will lead the way to providing meal information with future drivers. | ||||
* | otverio2015: new driver for OneTouch Verio (2015) and similar devices. | Diego Elio Pettenò | 2016-02-14 | 2 | -0/+231 |
| | | | | | | | | This should be working for OneTouch Select Plus devices, too. It currently does not support reporting in the native unit of the device. As of today, you'll also need my forked repository of python-scsi, as the current upstream one does not have working SGIO for Linux. | ||||
* | Make the ConnectionFailed exception more generic. | Diego Elio Pettenò | 2016-02-13 | 1 | -2/+2 |
| | |||||
* | otultraeasy: move the MalformedCommand exception to common. | Diego Elio Pettenò | 2016-02-13 | 2 | -11/+17 |
| | | | | | Also make the exception more general, so that it can be used in the verio2015 driver. | ||||
* | otultraeasy: move the crc function to lifescan_common. | Diego Elio Pettenò | 2016-02-13 | 3 | -16/+27 |
| | | | | | The same CRC-CCITT function is used in Verio 2015 devices, so prepare to reuse it by moving it to the common module. | ||||
* | Update documentation, reference the new glucometer-protocols repository. | Diego Elio Pettenò | 2016-02-09 | 2 | -5/+20 |
| | | | | Also update copyright year. | ||||
* | freestyle_optium: implement checksum verification on results. | Diego Elio Pettenò | 2016-02-09 | 1 | -2/+26 |
| | | | | | This should ensure more integrity of the results, and matches the behaviour on the lifescan devices. | ||||
* | Implement a basic driver for the FreeStyle Optium devices. | Diego Elio Pettenò | 2016-02-08 | 2 | -0/+256 |
| | | | | | This driver supports dumping of (glucose) readings and reading/setting the clock. | ||||
* | otultra2: avoid using connect/disconnect to wake up the device. | Diego Elio Pettenò | 2014-02-08 | 1 | -3/+2 |
| | | | | It seems like the device is very sensible to the reset command. | ||||
* | Add a note that the Ultra Easy is also known as Ultra Mini. | Diego Elio Pettenò | 2014-01-29 | 1 | -2/+3 |
| | |||||
* | otultra2: move checksum function within otultra2 driver. | Diego Elio Pettenò | 2014-01-29 | 4 | -49/+28 |
| | | | | | The function is not shared with the Ultra Easy and likely not with other devices either. | ||||
* | Initial support for OneTouch Ultra Easy glucometers. | Diego Elio Pettenò | 2014-01-29 | 3 | -3/+398 |
| | | | | | The driver is fully functional but requires proper documentation and testing. | ||||
* | common: fix namedtuple usage to allow for optional parameters. | Diego Elio Pettenò | 2014-01-29 | 1 | -3/+3 |
| | | | | The otultraeasy does not provide comments or meal indications. | ||||
* | Add connect/disconnect methods to otultra2 and send \x11\r on connection. | Diego Elio Pettenò | 2014-01-29 | 2 | -5/+12 |
| | | | | | The otultraeasy requires explicit connect/disconnect so implementing this before is helpful. | ||||
* | Merge pull request #1 from jimsiff/master | Diego Elio Pettenò | 2013-12-14 | 1 | -2/+7 |
|\ | | | | | Add confirmation prompt to zero log argument | ||||
| * | Add confirmation prompt to zero log argument | jimsiff | 2013-12-14 | 1 | -2/+7 |
|/ | | | | | I’m sure there’s a cleaner way to do this, but I wanted a confirmation when zeroing the glucometer data log. | ||||
* | Update documentation for the dump format and options. | Diego Elio Pettenò | 2013-12-11 | 1 | -0/+20 |
| | |||||
* | Clean up the code to remove methods that should be functions and imports. | Diego Elio Pettenò | 2013-12-11 | 3 | -122/+115 |
| | |||||
* | Allow sorting the dumped data; sort by date by default. | Diego Elio Pettenò | 2013-12-11 | 2 | -6/+18 |
| | | | | | This changes the dump output for otultra2 devices as they would dump data in record format, last reading first. | ||||
* | Change all the internal representations to mg/dL for compatibility with LifeScan. | Diego Elio Pettenò | 2013-12-11 | 2 | -15/+12 |
| | | | | | | While mmol/L is the international standard unit, at least LifeScan uses mg/dL in all their devices, and since they are the ones for which we have protocols for, we might as well use the same. | ||||
* | glucometer.py: if no unit is provided on command line, use the default of the meter. | Diego Elio Pettenò | 2013-12-11 | 1 | -1/+5 |
| | |||||
* | Generalise the meal/comment handling to the Reading object. | Diego Elio Pettenò | 2013-12-11 | 3 | -8/+18 |
| | | | | | While not all readers implement before/after meal notes, it's possible to implement an heuristics for that. | ||||
* | otultra2: expose the meal and comments as separate field in the CSV. | Diego Elio Pettenò | 2013-12-11 | 1 | -5/+1 |
| | | | | | Idea by Jim Sifferle, implemented in a slightly different way as I noticed I forgot to quote it properly. | ||||
* | Better error handling. | Diego Elio Pettenò | 2013-12-08 | 2 | -22/+24 |
| | | | | | If any exception is thrown by the library, print an error statement and return a non-zero exit value. | ||||
* | Add a new command to dump the identification of the glucometer. | Diego Elio Pettenò | 2013-12-08 | 2 | -4/+26 |
| | | | | This allows to get the serial number, as well as other details about the glucometer once it's installed. | ||||
* | otultra2: implement a zero log command to clear a device's memory. | Diego Elio Pettenò | 2013-12-08 | 2 | -1/+20 |
| | |||||
* | otultra2: implement decoding of meal and comment codes. | Diego Elio Pettenò | 2013-12-08 | 3 | -3/+35 |
| | | | | This also dumps the comment with the dump command. | ||||
* | Read more data out of the OTUltra2 dump lines. Return data in a Reading object. | Diego Elio Pettenò | 2013-09-29 | 3 | -12/+32 |
| | | | | | The Reading object will be extended to cater for flags, comments and other device-specific information. | ||||
* | Fix style for tests. | Diego Elio Pettenò | 2013-09-29 | 3 | -68/+60 |
| | |||||
* | test_otultra2: factor out setting of returned serial string. | Diego Elio Pettenò | 2013-08-10 | 1 | -9/+9 |
| | |||||
* | glucometer: allow providing a freeform arbitrary date to set on the meter. | Diego Elio Pettenò | 2013-08-04 | 1 | -2/+10 |
| | |||||
* | setup.py: update license specification. | Diego Elio Pettenò | 2013-08-03 | 1 | -1/+1 |
| | |||||
* | glucometer: mark executable. | Diego Elio Pettenò | 2013-08-03 | 1 | -0/+0 |
| | |||||
* | Relicense everything under MIT license. | Diego Elio Pettenò | 2013-08-03 | 10 | -684/+27 |
| | | | | | There is no reason for me to use GPLv3 now that I'm not using the CRC32-Sick code, so I'll go with the most liberal license out there. | ||||
* | Implement the correct checksum algorithm. | Diego Elio Pettenò | 2013-08-03 | 3 | -34/+13 |
| | | | | | | | Unlike what I though, OneTouch2 does not use CRC32 Sick algorithm, but a very stupid full 16-bit modulo sum of the bytes in the reply. This is very simple and does not require GPLv3 code at all. | ||||
* | Add support for checksum verification for the otultra2 driver. | Diego Elio Pettenò | 2013-08-03 | 5 | -29/+139 |
| | | | | | | | This introduced some changes in the Exception class to simplify the code, and at the same time it adds a module for multiple lifescan drivers to share code (multiple OneTouch protocols share the same checksum for instance). | ||||
* | glucometer: remove unused argv usage. | Diego Elio Pettenò | 2013-08-03 | 1 | -2/+1 |
| | |||||
* | Update function names to follow PEP8. | Diego Elio Pettenò | 2013-08-03 | 6 | -43/+54 |
| | |||||
* | Add utf-8 encoding specification to all files. | Diego Elio Pettenò | 2013-08-03 | 7 | -0/+8 |
| | |||||
* | glucometer: add support for selecting output units on dump. | Diego Elio Pettenò | 2013-08-03 | 1 | -1/+4 |
| | |||||
* | glucometer: fix script to actually work and provide actions. | Diego Elio Pettenò | 2013-08-03 | 1 | -2/+13 |
| | |||||
* | Add tests for the glucose unit conversion. | Diego Elio Pettenò | 2013-08-03 | 1 | -0/+53 |
| | |||||
* | test_otultra2: add header. | Diego Elio Pettenò | 2013-08-03 | 1 | -0/+7 |
| | |||||
* | otultra2: fix default unit handling. | Diego Elio Pettenò | 2013-08-03 | 1 | -1/+2 |
| | |||||
* | Add a link to README.md to try rendering it on GitHub. | Diego Elio Pettenò | 2013-08-03 | 1 | -0/+1 |
| | |||||
* | Initial import of the raw data. | Diego Elio Pettenò | 2013-08-03 | 12 | -0/+1142 |