+ "metrix-mx56c", asycii, "Metrix", "MX56C",
+ "2400/8n1", ASYCII_PACKET_SIZE, 0, 0, NULL,
+ sr_asycii_packet_valid, sr_asycii_parse, NULL
+ ),
+ /* }}} */
+ /* bm25x based meters {{{ */
+ DMM(
+ "brymen-bm25x", bm25x,
+ "Brymen", "BM25x", "9600/8n1/rts=1/dtr=1",
+ BRYMEN_BM25X_PACKET_SIZE, 0, 0, NULL,
+ sr_brymen_bm25x_packet_valid, sr_brymen_bm25x_parse,
+ NULL
+ ),
+ /* }}} */
+ /* bm52x based meters {{{ */
+ DMM_CONN(
+ "brymen-bm52x", brymen_bm52x, "Brymen", "BM52x",
+ "hid/bu86x", NULL, BRYMEN_BM52X_PACKET_SIZE, 4000, 500,
+ sr_brymen_bm52x_packet_request,
+ sr_brymen_bm52x_packet_valid, sr_brymen_bm52x_parse,
+ NULL
+ ),
+ DMM_CONN(
+ "brymen-bm82x", brymen_bm52x, "Brymen", "BM82x",
+ "hid/bu86x", NULL, BRYMEN_BM52X_PACKET_SIZE, 4000, 500,
+ sr_brymen_bm82x_packet_request,
+ sr_brymen_bm82x_packet_valid, sr_brymen_bm52x_parse,
+ NULL
+ ),
+ /* }}} */
+ /* bm85x based meters {{{ */
+ DMM_LEN(
+ "brymen-bm85x", brymen_bm85x, "Brymen", "BM85x",
+ NULL, "9600/8n1/dtr=1/rts=1",
+ BRYMEN_BM85x_PACKET_SIZE_MIN, 2000, 400,
+ NULL, NULL, /* INIT/FREE for DMM state */
+ brymen_bm85x_after_open, brymen_bm85x_packet_request,
+ brymen_bm85x_packet_valid, brymen_bm85x_parse,
+ NULL
+ ),
+ /* }}} */
+ /* bm86x based meters {{{ */
+ DMM_CONN(
+ "brymen-bm86x", brymen_bm86x, "Brymen", "BM86x",
+ "hid/bu86x", NULL, BRYMEN_BM86X_PACKET_SIZE, 500, 100,
+ sr_brymen_bm86x_packet_request,
+ sr_brymen_bm86x_packet_valid, sr_brymen_bm86x_parse,
+ NULL
+ ),
+ /* }}} */
+ /* dtm0660 based meters {{{ */
+ DMM(
+ "peaktech-3415", dtm0660,
+ "PeakTech", "3415", "2400/8n1/rts=0/dtr=1",
+ DTM0660_PACKET_SIZE, 0, 0, NULL,
+ sr_dtm0660_packet_valid, sr_dtm0660_parse, NULL
+ ),
+ DMM(
+ "velleman-dvm4100", dtm0660,
+ "Velleman", "DVM4100", "2400/8n1/rts=0/dtr=1",
+ DTM0660_PACKET_SIZE, 0, 0, NULL,
+ sr_dtm0660_packet_valid, sr_dtm0660_parse, NULL
+ ),
+ /* }}} */
+ /* eev121gw based meters {{{ */
+ DMM(
+ "eevblog-121gw", eev121gw, "EEVblog", "121GW",
+ "115200/8n1", EEV121GW_PACKET_SIZE, 0, 0, NULL,
+ sr_eev121gw_packet_valid, sr_eev121gw_3displays_parse, NULL
+ ),
+ /* }}} */
+ /* es519xx based meters {{{ */
+ DMM(
+ "iso-tech-idm103n", es519xx,
+ "ISO-TECH", "IDM103N", "2400/7o1/rts=0/dtr=1",
+ ES519XX_11B_PACKET_SIZE, 0, 0, NULL,
+ sr_es519xx_2400_11b_packet_valid, sr_es519xx_2400_11b_parse,
+ NULL
+ ),
+ /*
+ * Note: ES51922 and ES51986 baudrate is actually 19230. This is
+ * "out" by .15%, and so is well within the typical 1% margin
+ * that is considered acceptable in UART communication, and thus
+ * should not cause an issue.
+ *
+ * However, using 19230 as baudrate here will not work, as most DMM
+ * cables do not support that baudrate!
+ */
+ DMM(
+ "tenma-72-7750-ser", es519xx,
+ "Tenma", "72-7750 (UT-D02 cable)", "19200/7o1/rts=0/dtr=1",
+ ES519XX_11B_PACKET_SIZE, 0, 0, NULL,
+ sr_es519xx_19200_11b_packet_valid, sr_es519xx_19200_11b_parse,
+ NULL
+ ),
+ DMM(
+ "uni-t-ut60g-ser", es519xx,
+ "UNI-T", "UT60G (UT-D02 cable)", "19200/7o1/rts=0/dtr=1",
+ ES519XX_11B_PACKET_SIZE, 0, 0, NULL,
+ sr_es519xx_19200_11b_packet_valid, sr_es519xx_19200_11b_parse,
+ NULL
+ ),
+ DMM(
+ "uni-t-ut61e-ser", es519xx,
+ "UNI-T", "UT61E (UT-D02 cable)", "19200/7o1/rts=0/dtr=1",
+ ES519XX_14B_PACKET_SIZE, 0, 0, NULL,
+ sr_es519xx_19200_14b_packet_valid, sr_es519xx_19200_14b_parse,