Commit Graph

105 Commits

Author SHA1 Message Date
David Given
ea4a147751 Move fluxmapreader/fluxpattern into data. 2024-10-15 00:00:27 +02:00
David Given
c5373480ba Move a lot of the data-handling utilities into their own module. 2024-10-13 13:35:48 +02:00
David Given
e1f2494966 Create a config module containing all the configuration, proto and flags
stuff.
2024-10-13 11:57:18 +02:00
David Given
9ddfa5a56b Move the logger into core. 2024-10-13 11:39:33 +02:00
David Given
665ceb9ea6 Add missing file. 2024-10-08 23:24:07 +02:00
David Given
fc8d0283b1 Remove the applesauce.cc and test, as it's not used any more. 2024-10-02 00:28:04 +02:00
David Given
5e892e8fc3 Fixup for Applesauce. 2024-10-02 00:23:39 +02:00
David Given
8b124e5ced Merge. 2024-10-01 23:58:48 +02:00
David Given
65fb3e9e76 Detect index marks and interleave them into the flux stream. 2024-10-01 22:26:02 +02:00
David Given
33f3c97b03 Crudely hack in a lock against writing, as I'll have to wait for the v3
firmware.
2024-10-01 21:30:53 +02:00
David Given
ca940d1599 Refactor core libraries into their own library. 2024-10-01 20:36:53 +02:00
David Given
d00fba02a0 Rename greaseWeazle to greaseweazle (as it needs doing). 2024-09-30 22:03:17 +02:00
David Given
045e5e7303 Rename write_clock to write_clock_ns, because it is. Tweak the default value
for correctness.
2024-09-30 22:02:09 +02:00
David Given
6fd98e3c67 Writing with the Applesauce now mostly works, although there's still stuff to
be dealt with.
2024-09-29 23:40:19 +02:00
David Given
38b8cd2574 Reads mostly work; writes not yet. 2024-09-29 13:05:46 +02:00
David Given
6b28f36b97 getVersion() doesn't need to be a public USB method. 2024-09-28 23:44:33 +02:00
David Given
d394b21920 Got our first track read! 2024-09-28 23:39:30 +02:00
David Given
14255a5076 Successfully read raw Applesauce data. 2024-09-28 23:07:05 +02:00
David Given
8fa1a887ce Initial work towards Applesauce support --- you can connect to the device and
test bandwidth.
2024-09-28 20:04:54 +02:00
David Given
2840831017 Initial boilerplate for the Applesauce. 2024-09-28 17:03:59 +02:00
David Given
653a6a0189 Be more consistent about DTR toggling (needed to reset serial devices). 2024-05-01 12:54:22 +02:00
p-j-b
c2248c7e4a Added CLRDTR and SETDTR to setBaudRate
Fixes hang in Windows with Adafruit Floppy GreaseWeazle
2024-04-02 13:05:29 +01:00
David Given
7095c03e28 Fix a whole pile of missing 'override' keywords. 2024-01-22 20:55:38 +01:00
David Given
533b217c8f Eliminate the broken tpi system for a simple drive/format type field. 2023-10-29 21:10:14 +01:00
David Given
f5f223f622 First steps towards reworking the build system... again. 2023-10-21 23:02:46 +02:00
David Given
95b703b1ea Tidy reporting of USB errors. 2023-08-19 20:46:41 +02:00
dg
1330d56cdd Fix a bunch of errors caused by changes to libfmt. 2023-07-07 21:32:21 +00:00
David Given
d4c0853e1f Reset the Greaseweazle data stream when connecting. 2023-05-25 22:23:28 +02:00
David Given
53adcd92ed Spell (and capitalise) Greaseweazle correctly. 2023-05-25 19:50:05 +02:00
dg
dcfcc6271c Sort out a whole bunch of other things, including cleaning up the way the
verification source is handled.
2023-05-12 23:28:25 +00:00
dg
42e6c11081 Migrate to a new global config object. 2023-05-10 23:13:33 +00:00
dg
9ba3f90f1e Change the global config variable to a globalConfig() function. 2023-05-10 22:07:17 +00:00
dg
cf537b6222 Add the proto part of option requirements. 2023-05-10 18:29:46 +00:00
dg
d4b55cd8f5 Switch from Logger() to log(). 2023-05-09 22:47:36 +00:00
dg
466c3c34e5 Replace the Error() object with an error() function which takes fmt
formatspecs, making for much cleaner code. Reformatted everything.

This actually happened in multiple steps but then I corrupted my local
repository and I had to recover from the working tree.
2023-05-09 20:59:44 +00:00
dg
7c40093698 Try to work around weird test failure on Windows. 2023-05-06 22:30:50 +00:00
dg
2022732dd9 Some final tidying. 2023-04-04 20:12:21 +00:00
dg
1f74d9189f Make the new GUI actually work, to a certain extent. 2023-04-02 22:54:09 +00:00
Thomas Daede
968184fa7a Greaseweazle: Fix RPM measurement in some circumstances.
Accumulate number of ticks returned in FLUXOP_SPACE so that they
count towards the total track time.
2022-05-29 23:17:35 -07:00
Jeff Epler
5e4c7719ff Add support for the interfacing to an Apple Disk ][
Some folks may want to use interfaces besides PC/Shugart ones.
Together with https://github.com/adafruit/Adafruit_Floppy/pull/15
and a hand wired board I'm able to read flux from an Apple Disk ][
2022-04-19 08:51:16 -05:00
David Given
3c17e74f6d Bump the protocol version to ensure people upgrade. 2022-03-26 21:54:29 +00:00
David Given
86c5cccb08 Rename cylinder to track throughout (mostly). 2022-03-25 20:16:12 +01:00
David Given
d303067deb Massive refactor to work in logical cylinders everywhere. The logical/physical
mapping is now done at the last stage and should, ideally, be automatic. I'm
sure there are bugs everywhere.
2022-03-25 00:22:28 +01:00
David Given
6f1031e95b Writing flux now works. 2022-02-27 12:54:57 +01:00
David Given
38eda6ed3c Add log and settings panels. The log panel is populated during a read (or
write).
2022-02-26 18:36:21 +01:00
David Given
e14030e369 Actually start using bits of the decoder framework. 2022-02-21 22:02:28 +01:00
Jeff Epler
33bd912476 Some quality of life improvements for Adafruit generic GW-compatibles
The addition of the new tcsetattr call fixes a problem where interrupting
fluxengine during a flux read will leave data in the device and/or Linux's
serial buffers, so that the next invocation of fluxengine will fail similar
to
```
Error: command returned garbage (0x27 != 0x0 with status 0x31)
```
(the specific value differs because it's actually flux data)

Merely changing the existing tcsetattr call to specify TCSAFLUSH was not
enough; moving it after the 200ms pause seems to be enough.

Note that it doesn't seem feasible in our USB stack to make DTR reset
the device, since that would take down the USB stack and require a fresh
USB connection.

The addition of the special case for `rlen == 0` in read is for when the
GW-compatible board is reset or crashes and usb-disconnects during a
reading operation. Without this change, fluxengine spins forever at 100%
of a CPU, repeating a read().  After the change, this will cause
the host computer to print messages like:
```
  2.1: 200 ms in 68928 bytes
  3.0: Error: serial read returned no data (device removed?)
```
and exit.

I only tested these changes on Linux (Debian with kernel 5.10) and in
particular I don't know if/how it will work on a Mac.
2022-02-12 22:04:18 -06:00
lady ada
9ec56f1dfa fix 2 byte pack for revolution count 2022-02-08 11:43:20 -05:00
Thomas Daede
77257b0989 Support time-based reads for Greaseweazle V24+.
This substantially speeds up read and verify operations, allowing
only 1.2 revs rather than 2 revs to be read.

Fixes #426
2022-01-26 08:02:30 -08:00
David Given
3e4d4cc002 Hotfix for Windows build. 2022-01-22 22:29:34 +01:00