From 441cbe9bc79764705f94560eb218a9ee18d2a9ec Mon Sep 17 00:00:00 2001 From: demik Date: Sat, 30 Oct 2021 15:06:51 +0200 Subject: [PATCH] added support for MicroSpeed MacTRAC 2.0 --- ChangeLog.md | 3 +++ main/adb.c | 10 +++++++++- main/adb.h | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index e08138c..5bca86c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,6 @@ +## v1.4.2 (unreleased) +- added support for MicroSpeed MacTRAC 2.0 + ## v1.4.1 - update to ESP-IDF v4.2.2: - https://github.com/espressif/esp-idf/releases/tag/v4.2.2 diff --git a/main/adb.c b/main/adb.c index 1a344f8..ad5e347 100644 --- a/main/adb.c +++ b/main/adb.c @@ -139,7 +139,12 @@ void adb_probe(void) { register3 = adb_rx_mouse(); ESP_LOGD("ADB", "Device $3 register3: %x", register3); - if ((register3 & ADB_H_ALL) == ADB_H_C100) { + if (register3 && (register3 & ADB_H_ALL) == ADB_H_ERR) + ESP_LOGE(TAG, "Mouse failed self init test"); + + /* Accept all known handlers */ + if (((register3 & ADB_H_ALL) == ADB_H_C100) || ((register3 & ADB_H_ALL) == ADB_H_C200) || + ((register3 & ADB_H_ALL) == ADB_H_MTRC)) { ESP_LOGI(TAG, "... detected mouse at $3"); break; } @@ -163,6 +168,9 @@ void adb_probe(void) { case ADB_H_C200: ESP_LOGD(TAG, "Mouse running at 200cpi"); break; + case ADB_H_MTRC: + ESP_LOGD(TAG, "MacTRAC running at default cpi"); + break; default: ESP_LOGE(TAG, "Mouse running with unknow handler: %x", register3 & ADB_H_ALL); } diff --git a/main/adb.h b/main/adb.h index 450990a..57a248c 100644 --- a/main/adb.h +++ b/main/adb.h @@ -66,8 +66,10 @@ void adb_tx_reset(void); #define ADB_B_DOWN 1 #define ADB_H_ALL 0xff // Handlers bitmask +#define ADB_H_ERR 0x00 // Handler 0 (Self init error) #define ADB_H_C100 0x01 // Handler 1 (Classic @ 100cpi) #define ADB_H_C200 0x02 // Handler 2 (Classic @ 200cpi) +#define ADB_H_MTRC 0x2f // Handler for MacTRAC 2.0 #define ADB_H_MOVE 0xfe // Move to another address /* Host states */