mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Merge pull request #19 from davidgiven/long
Add support for long intervals
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
<Data key="check_tolerance" value="True" />
|
||||
<Data key="clock_version" value="v1" />
|
||||
<Data key="derive_type" value="NAMED_FREQ" />
|
||||
<Data key="desired_freq" value="16" />
|
||||
<Data key="desired_freq" value="12" />
|
||||
<Data key="desired_unit" value="6" />
|
||||
<Data key="divider" value="2" />
|
||||
<Data key="domain" value="DIGITAL" />
|
||||
@@ -99,6 +99,30 @@
|
||||
<Data key="sync_with_bus_clk" value="True" />
|
||||
<Data key="user_set_domain" value="False" />
|
||||
</Group>
|
||||
<Group key="66f14071-bddd-4b4d-a9aa-a129cceaa7b6">
|
||||
<Data key="check_tolerance" value="True" />
|
||||
<Data key="clock_version" value="v1" />
|
||||
<Data key="derive_type" value="NAMED_DIVIDER" />
|
||||
<Data key="desired_freq" value="0" />
|
||||
<Data key="desired_unit" value="15" />
|
||||
<Data key="divider" value="0" />
|
||||
<Data key="domain" value="DIGITAL" />
|
||||
<Data key="enabled" value="True" />
|
||||
<Data key="minus_accuracy" value="0.25" />
|
||||
<Data key="minus_tolerance" value="5" />
|
||||
<Data key="name" value="Clock_3" />
|
||||
<Data key="named_src_direct_connect" value="True" />
|
||||
<Data key="netlist_name" value="Clock_3" />
|
||||
<Data key="placement" value="AUTO" />
|
||||
<Data key="plus_accuracy" value="0.25" />
|
||||
<Data key="plus_tolerance" value="5" />
|
||||
<Data key="scope" value="LOCAL" />
|
||||
<Data key="src_clk_id" value="75C2148C-3656-4d8a-846D-0CAE99AB6FF7" />
|
||||
<Data key="src_clk_name" value="BUS_CLK" />
|
||||
<Data key="start_on_reset" value="True" />
|
||||
<Data key="sync_with_bus_clk" value="True" />
|
||||
<Data key="user_set_domain" value="False" />
|
||||
</Group>
|
||||
<Group key="349ffa20-8576-4ac3-9a6f-34ef606de6cf">
|
||||
<Data key="check_tolerance" value="True" />
|
||||
<Data key="clock_version" value="v1" />
|
||||
@@ -248,9 +272,9 @@
|
||||
<Data key="clock_version" value="v1" />
|
||||
<Data key="derive_type" value="BUILTIN" />
|
||||
<Data key="desired_freq" value="0" />
|
||||
<Data key="desired_unit" value="0" />
|
||||
<Data key="desired_unit" value="15" />
|
||||
<Data key="divider" value="0" />
|
||||
<Data key="domain" value="DIGITAL" />
|
||||
<Data key="domain" value="0" />
|
||||
<Data key="enabled" value="False" />
|
||||
<Data key="minus_accuracy" value="0" />
|
||||
<Data key="minus_tolerance" value="0" />
|
||||
@@ -270,7 +294,7 @@
|
||||
<Data key="check_tolerance" value="True" />
|
||||
<Data key="clock_version" value="v1" />
|
||||
<Data key="derive_type" value="BUILTIN" />
|
||||
<Data key="desired_freq" value="48" />
|
||||
<Data key="desired_freq" value="64" />
|
||||
<Data key="desired_unit" value="6" />
|
||||
<Data key="divider" value="0" />
|
||||
<Data key="domain" value="0" />
|
||||
@@ -357,7 +381,7 @@
|
||||
<Data key="desired_freq" value="0" />
|
||||
<Data key="desired_unit" value="0" />
|
||||
<Data key="divider" value="1" />
|
||||
<Data key="domain" value="DIGITAL" />
|
||||
<Data key="domain" value="0" />
|
||||
<Data key="enabled" value="True" />
|
||||
<Data key="master_divider_used" value="True" />
|
||||
<Data key="minus_accuracy" value="0.25" />
|
||||
@@ -492,6 +516,7 @@
|
||||
<Data key="06c4d5d4-f15f-4b29-a1d0-c24b2e38b1ec" value="CounterClock" />
|
||||
<Data key="24cd38f7-f472-4403-837f-86807c8f5333" value="PULSE_CLOCK" />
|
||||
<Data key="63ed4137-0b09-4256-8a27-35c9a2653f1a" value="Clock_2" />
|
||||
<Data key="66f14071-bddd-4b4d-a9aa-a129cceaa7b6" value="Clock_3" />
|
||||
<Data key="349ffa20-8576-4ac3-9a6f-34ef606de6cf" value="Clock_1" />
|
||||
<Data key="6616e828-6611-4893-a674-66c861d79d6c" value="SignalSamplingClock" />
|
||||
<Data key="12664fc6-9d70-44b1-8a49-887a292e1b7f" value="Clock_3" />
|
||||
|
||||
@@ -2027,20 +2027,20 @@
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG" persistent="">
|
||||
<Hidden v="True" />
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG.c" persistent="Generated_Source\PSoC5\CAPTURE_REG.c">
|
||||
<Hidden v="True" />
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_REG.h" persistent="Generated_Source\PSoC5\CAPTURE_REG.h">
|
||||
<Hidden v="True" />
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
@@ -2686,27 +2686,27 @@
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER" persistent="">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER.c" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER.c">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER.h" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER.h">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_COUNTER_PM.c" persistent="Generated_Source\PSoC5\CAPTURE_COUNTER_PM.c">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
@@ -2844,27 +2844,27 @@
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP" persistent="">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP.h" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP.h">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP.c" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP.c">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_TIMESTAMP_PM.c" persistent="Generated_Source\PSoC5\REPLAY_TIMESTAMP_PM.c">
|
||||
<Hidden v="False" />
|
||||
<Hidden v="True" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
@@ -2933,6 +2933,105 @@
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA" persistent="">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA.h" persistent="Generated_Source\PSoC5\REPLAY_DATA.h">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA.c" persistent="Generated_Source\PSoC5\REPLAY_DATA.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_DATA_PM.c" persistent="Generated_Source\PSoC5\REPLAY_DATA_PM.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET" persistent="">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET.h" persistent="Generated_Source\PSoC5\REPLAY_RESET.h">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET.c" persistent="Generated_Source\PSoC5\REPLAY_RESET.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="REPLAY_RESET_PM.c" persistent="Generated_Source\PSoC5\REPLAY_RESET_PM.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET" persistent="">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET.h" persistent="Generated_Source\PSoC5\CAPTURE_RESET.h">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="HEADER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET.c" persistent="Generated_Source\PSoC5\CAPTURE_RESET.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="CAPTURE_RESET_PM.c" persistent="Generated_Source\PSoC5\CAPTURE_RESET_PM.c">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="SOURCE_C;CortexM3;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
@@ -2947,6 +3046,66 @@
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
|
||||
</CyGuid_d8451a8e-a4ea-4e21-aba8-966eaa7ea07d>
|
||||
<CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtComponentSerialize" version="1">
|
||||
<CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtPhysicalFolderSerialize" version="1">
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler" persistent="Sampler">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler.cysym" persistent="Sampler\Sampler.cysym">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="OTHER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sampler.v" persistent="Sampler\Sampler.v">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="OTHER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
|
||||
</CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e>
|
||||
<CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtComponentSerialize" version="1">
|
||||
<CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtPhysicalFolderSerialize" version="1">
|
||||
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolderSerialize" version="3">
|
||||
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainerSerialize" version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer" persistent="Sequencer">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemListSerialize" version="2">
|
||||
<dependencies>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer.cysym" persistent="Sequencer\Sequencer.cysym">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="OTHER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileSerialize" version="3" xml_contents_version="1">
|
||||
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemSerialize" version="2" name="Sequencer.v" persistent="Sequencer\Sequencer.v">
|
||||
<Hidden v="False" />
|
||||
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
|
||||
<build_action v="OTHER;;;;" />
|
||||
<PropertyDeltas />
|
||||
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
<filters />
|
||||
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>
|
||||
</CyGuid_813b8d13-518a-4dc8-91ba-cda6042dfb52>
|
||||
</CyGuid_4429d4ed-fe84-42d0-9e9f-19aee0ff4e7e>
|
||||
</dependencies>
|
||||
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
|
||||
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
|
||||
@@ -3253,6 +3412,6 @@
|
||||
</ignored_deps>
|
||||
</CyGuid_495451fe-d201-4d01-b22d-5d3f5609ac37>
|
||||
<boot_component v="" />
|
||||
<current_generation v="15" />
|
||||
<current_generation v="23" />
|
||||
</CyGuid_fec8f9e8-2365-4bdb-96d3-a4380222e01b>
|
||||
</CyXmlSerializer>
|
||||
BIN
FluxEngine.cydsn/Sampler/Sampler.cysym
Normal file
BIN
FluxEngine.cydsn/Sampler/Sampler.cysym
Normal file
Binary file not shown.
54
FluxEngine.cydsn/Sampler/Sampler.v
Normal file
54
FluxEngine.cydsn/Sampler/Sampler.v
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
//`#start header` -- edit after this line, do not edit this line
|
||||
`include "cypress.v"
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
// Generated on 02/21/2019 at 23:51
|
||||
// Component: Sampler
|
||||
module Sampler (
|
||||
output reg interrupt,
|
||||
output reg [7:0] result,
|
||||
input clock,
|
||||
input sample,
|
||||
input reset
|
||||
);
|
||||
|
||||
//`#start body` -- edit after this line, do not edit this line
|
||||
|
||||
reg [6:0] counter; // monotonically increasing counter
|
||||
reg last_sample;
|
||||
|
||||
always @(posedge clock)
|
||||
begin
|
||||
if (reset)
|
||||
begin
|
||||
result <= 0;
|
||||
interrupt <= 0;
|
||||
counter <= 1;
|
||||
end
|
||||
else if (counter == 0)
|
||||
begin
|
||||
// Rollover.
|
||||
result <= 8'h80;
|
||||
interrupt <= 1;
|
||||
counter <= 1;
|
||||
end
|
||||
else if (sample && !last_sample)
|
||||
begin
|
||||
// A sample happened since the last clock.
|
||||
result[6:0] <= counter;
|
||||
result[7] <= 0;
|
||||
interrupt <= 1;
|
||||
counter <= 1;
|
||||
end
|
||||
else
|
||||
begin
|
||||
counter <= counter + 1;
|
||||
interrupt <= 0;
|
||||
end
|
||||
last_sample <= sample;
|
||||
end
|
||||
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
endmodule
|
||||
//`#start footer` -- edit after this line, do not edit this line
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
BIN
FluxEngine.cydsn/Sequencer/Sequencer.cysym
Normal file
BIN
FluxEngine.cydsn/Sequencer/Sequencer.cysym
Normal file
Binary file not shown.
45
FluxEngine.cydsn/Sequencer/Sequencer.v
Normal file
45
FluxEngine.cydsn/Sequencer/Sequencer.v
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
//`#start header` -- edit after this line, do not edit this line
|
||||
`include "cypress.v"
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
// Generated on 02/22/2019 at 20:31
|
||||
// Component: Sequencer
|
||||
|
||||
module Sequencer (
|
||||
output reg interrupt,
|
||||
output reg wdata,
|
||||
input clock,
|
||||
input [7:0] data,
|
||||
input reset
|
||||
);
|
||||
|
||||
//`#start body` -- edit after this line, do not edit this line
|
||||
|
||||
reg [6:0] counter;
|
||||
|
||||
always @(posedge clock)
|
||||
begin
|
||||
if (reset)
|
||||
begin
|
||||
counter <= 0;
|
||||
interrupt <= 0;
|
||||
wdata <= 0;
|
||||
end
|
||||
else if (counter == data[6:0])
|
||||
begin
|
||||
counter <= 1; // tick zero is this one
|
||||
interrupt <= 1;
|
||||
wdata <= ~data[7];
|
||||
end
|
||||
else
|
||||
begin
|
||||
counter <= counter + 1;
|
||||
interrupt <= 0;
|
||||
wdata <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
endmodule
|
||||
//`#start footer` -- edit after this line, do not edit this line
|
||||
//`#end` -- edit above this line, do not edit this line
|
||||
Binary file not shown.
@@ -90,7 +90,6 @@ static void start_motor(void)
|
||||
homed = false;
|
||||
}
|
||||
|
||||
|
||||
if (DISKSTATUS_REG_Read() & DISKSTATUS_DSKCHG)
|
||||
homed = false;
|
||||
|
||||
@@ -251,17 +250,18 @@ static void init_capture_dma(void)
|
||||
|
||||
CyDmaTdSetConfiguration(td[i], BUFFER_SIZE, td[nexti],
|
||||
CY_DMA_TD_INC_DST_ADR | CAPTURE_DMA__TD_TERMOUT_EN);
|
||||
CyDmaTdSetAddress(td[i], LO16((uint32)CAPTURE_COUNTER_STATICCOUNT_LSB_PTR), LO16((uint32)&dma_buffer[i]));
|
||||
CyDmaTdSetAddress(td[i], LO16((uint32)&CAPTURE_REG_Status), LO16((uint32)&dma_buffer[i]));
|
||||
}
|
||||
}
|
||||
|
||||
static void cmd_read(struct read_frame* f)
|
||||
{
|
||||
SIDE_REG_Write(f->side);
|
||||
seek_to(current_track);
|
||||
seek_to(current_track);
|
||||
|
||||
/* Do slow setup *before* we go into the real-time bit. */
|
||||
|
||||
CAPTURE_RESET_Write(1);
|
||||
wait_until_writeable(FLUXENGINE_DATA_IN_EP_NUM);
|
||||
init_capture_dma();
|
||||
|
||||
@@ -276,6 +276,7 @@ static void cmd_read(struct read_frame* f)
|
||||
dma_reading_from_td = -1;
|
||||
dma_underrun = false;
|
||||
int count = 0;
|
||||
CAPTURE_RESET_Write(0);
|
||||
CyDmaChSetInitialTd(dma_channel, td[dma_writing_to_td]);
|
||||
CyDmaClearPendingDrq(dma_channel);
|
||||
CyDmaChEnable(dma_channel, 1);
|
||||
@@ -360,7 +361,7 @@ static void init_replay_dma(void)
|
||||
|
||||
CyDmaTdSetConfiguration(td[i], BUFFER_SIZE, td[nexti],
|
||||
CY_DMA_TD_INC_SRC_ADR | REPLAY_DMA__TD_TERMOUT_EN);
|
||||
CyDmaTdSetAddress(td[i], LO16((uint32)&dma_buffer[i]), LO16((uint32)REPLAY_TIMESTAMP_Control_PTR));
|
||||
CyDmaTdSetAddress(td[i], LO16((uint32)&dma_buffer[i]), LO16((uint32)REPLAY_DATA_Control_PTR));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,6 +374,7 @@ static void cmd_write(struct write_frame* f)
|
||||
}
|
||||
|
||||
SIDE_REG_Write(f->side);
|
||||
REPLAY_RESET_Write(1);
|
||||
seek_to(current_track);
|
||||
|
||||
init_replay_dma();
|
||||
@@ -410,6 +412,7 @@ static void cmd_write(struct write_frame* f)
|
||||
|
||||
writing = true;
|
||||
ERASE_REG_Write(1); /* start erasing! */
|
||||
REPLAY_RESET_Write(0); /* start writing! */
|
||||
REPLAY_DMA_FINISHED_IRQ_Enable();
|
||||
dma_underrun = false;
|
||||
CyDmaChSetInitialTd(dma_channel, td[dma_reading_from_td]);
|
||||
@@ -431,9 +434,8 @@ static void cmd_write(struct write_frame* f)
|
||||
{
|
||||
/* The USB stream has stopped early, so just fake data to keep the writer happy. */
|
||||
|
||||
uint8_t clock = 0;
|
||||
for (int i=0; i<BUFFER_SIZE; i++)
|
||||
dma_buffer[dma_writing_to_td][i] = clock += 0x30;
|
||||
dma_buffer[dma_writing_to_td][i] = 0x80;
|
||||
dma_writing_to_td = NEXT_BUFFER(dma_writing_to_td);
|
||||
}
|
||||
else
|
||||
@@ -611,7 +613,6 @@ int main(void)
|
||||
INDEX_IRQ_StartEx(&index_irq_cb);
|
||||
CAPTURE_DMA_FINISHED_IRQ_StartEx(&capture_dma_finished_irq_cb);
|
||||
REPLAY_DMA_FINISHED_IRQ_StartEx(&replay_dma_finished_irq_cb);
|
||||
CAPTURE_COUNTER_Start();
|
||||
DRIVE_REG_Write(0);
|
||||
/* UART_Start(); */
|
||||
USBFS_Start(0, USBFS_DWR_VDDD_OPERATION);
|
||||
|
||||
@@ -21,8 +21,14 @@ static SettableFlag showClockHistogram(
|
||||
nanoseconds_t Fluxmap::guessClock() const
|
||||
{
|
||||
uint32_t buckets[256] = {};
|
||||
for (uint8_t interval : _intervals)
|
||||
size_t cursor = 0;
|
||||
while (cursor < bytes())
|
||||
{
|
||||
uint32_t interval = getAndIncrement(cursor);
|
||||
if (interval > 0xff)
|
||||
continue;
|
||||
buckets[interval]++;
|
||||
}
|
||||
|
||||
uint32_t max = *std::max_element(std::begin(buckets), std::end(buckets));
|
||||
uint32_t min = *std::min_element(std::begin(buckets), std::end(buckets));
|
||||
@@ -106,7 +112,7 @@ std::vector<bool> Fluxmap::decodeToBits(nanoseconds_t clockPeriod) const
|
||||
|
||||
std::vector<bool> bitmap(pulses);
|
||||
unsigned count = 0;
|
||||
int cursor = 0;
|
||||
size_t cursor = 0;
|
||||
nanoseconds_t timestamp = 0;
|
||||
for (;;)
|
||||
{
|
||||
@@ -114,7 +120,7 @@ std::vector<bool> Fluxmap::decodeToBits(nanoseconds_t clockPeriod) const
|
||||
{
|
||||
if (cursor >= bytes())
|
||||
goto abort;
|
||||
uint8_t interval = (*this)[cursor++];
|
||||
uint8_t interval = getAndIncrement(cursor);
|
||||
timestamp += interval * NS_PER_TICK;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,12 +11,14 @@ Fluxmap& Fluxmap::appendBits(const std::vector<bool>& bits, nanoseconds_t clock)
|
||||
if (bits[i])
|
||||
{
|
||||
unsigned delta = (now - duration()) / NS_PER_TICK;
|
||||
while (delta > 255)
|
||||
while (delta >= 0x80)
|
||||
{
|
||||
appendIntervals({ 255 });
|
||||
delta -= 255;
|
||||
appendByte(0x80);
|
||||
delta -= 0x80;
|
||||
}
|
||||
appendIntervals({ (uint8_t)delta });
|
||||
if (delta == 0x00)
|
||||
delta++;
|
||||
appendByte(delta);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,45 +2,77 @@
|
||||
#include "fluxmap.h"
|
||||
#include "protocol.h"
|
||||
|
||||
Fluxmap& Fluxmap::appendIntervals(const std::vector<uint8_t>& intervals)
|
||||
uint32_t Fluxmap::getAndIncrement(size_t& index) const
|
||||
{
|
||||
return appendIntervals(&intervals[0], intervals.size());
|
||||
uint32_t ticks = 0;
|
||||
|
||||
while (index < _bytes.size())
|
||||
{
|
||||
uint8_t b = _bytes[index++];
|
||||
ticks += b;
|
||||
if (!(b & 0x80))
|
||||
break;
|
||||
}
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
||||
Fluxmap& Fluxmap::appendIntervals(const uint8_t* ptr, size_t len)
|
||||
Fluxmap& Fluxmap::appendBytes(const std::vector<uint8_t>& bytes)
|
||||
{
|
||||
return appendBytes(&bytes[0], bytes.size());
|
||||
}
|
||||
|
||||
Fluxmap& Fluxmap::appendBytes(const uint8_t* ptr, size_t len)
|
||||
{
|
||||
while (len--)
|
||||
{
|
||||
uint8_t interval = *ptr++;
|
||||
_ticks += interval ? interval : 0x100;
|
||||
_intervals.push_back(interval);
|
||||
uint8_t byte = *ptr++;
|
||||
_ticks += byte;
|
||||
_bytes.push_back(byte);
|
||||
}
|
||||
|
||||
_duration = _ticks * NS_PER_TICK;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Fluxmap& Fluxmap::appendInterval(uint32_t ticks)
|
||||
{
|
||||
while (ticks >= 0x80)
|
||||
{
|
||||
appendByte(0x80);
|
||||
ticks -= 0x80;
|
||||
}
|
||||
appendByte((uint8_t)ticks);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Fluxmap::precompensate(int threshold_ticks, int amount_ticks)
|
||||
{
|
||||
uint8_t junk = 0xff;
|
||||
|
||||
for (unsigned i=0; i<_intervals.size(); i++)
|
||||
for (unsigned i=0; i<_bytes.size(); i++)
|
||||
{
|
||||
uint8_t& prev = (i == 0) ? junk : _intervals[i-1];
|
||||
uint8_t& curr = _intervals[i];
|
||||
uint8_t& prev = (i == 0) ? junk : _bytes[i-1];
|
||||
uint8_t& curr = _bytes[i];
|
||||
|
||||
if (curr > (3*threshold_ticks))
|
||||
continue;
|
||||
|
||||
if ((prev <= threshold_ticks) && (curr > threshold_ticks))
|
||||
{
|
||||
/* 01001; move the previous bit backwards. */
|
||||
prev -= amount_ticks;
|
||||
curr += amount_ticks;
|
||||
if (prev >= (1+amount_ticks))
|
||||
prev -= amount_ticks;
|
||||
if (curr <= (0x7f-amount_ticks))
|
||||
curr += amount_ticks;
|
||||
}
|
||||
else if ((prev > threshold_ticks) && (curr <= threshold_ticks))
|
||||
{
|
||||
/* 00101; move the current bit forwards. */
|
||||
prev += amount_ticks;
|
||||
curr -= amount_ticks;
|
||||
if (prev <= (0x7f-amount_ticks))
|
||||
prev += amount_ticks;
|
||||
if (curr >= (1+amount_ticks))
|
||||
curr -= amount_ticks;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,27 +4,27 @@
|
||||
class Fluxmap
|
||||
{
|
||||
public:
|
||||
uint8_t operator[](int index) const
|
||||
{
|
||||
return _intervals.at(index);
|
||||
}
|
||||
uint32_t getAndIncrement(size_t& index) const;
|
||||
|
||||
nanoseconds_t duration() const { return _duration; }
|
||||
int bytes() const { return _intervals.size(); }
|
||||
size_t bytes() const { return _bytes.size(); }
|
||||
const std::vector<uint8_t> rawBytes() const { return _bytes; }
|
||||
|
||||
const uint8_t* ptr() const
|
||||
{
|
||||
if (!_intervals.empty())
|
||||
return &_intervals.at(0);
|
||||
if (!_bytes.empty())
|
||||
return &_bytes.at(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Fluxmap& appendIntervals(const std::vector<uint8_t>& intervals);
|
||||
Fluxmap& appendIntervals(const uint8_t* ptr, size_t len);
|
||||
Fluxmap& appendInterval(uint32_t ticks);
|
||||
|
||||
Fluxmap& appendInterval(uint8_t interval)
|
||||
Fluxmap& appendBytes(const std::vector<uint8_t>& bytes);
|
||||
Fluxmap& appendBytes(const uint8_t* ptr, size_t len);
|
||||
|
||||
Fluxmap& appendByte(uint8_t byte)
|
||||
{
|
||||
return appendIntervals(&interval, 1);
|
||||
return appendBytes(&byte, 1);
|
||||
}
|
||||
|
||||
nanoseconds_t guessClock() const;
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
private:
|
||||
nanoseconds_t _duration = 0;
|
||||
int _ticks = 0;
|
||||
std::vector<uint8_t> _intervals;
|
||||
std::vector<uint8_t> _bytes;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -39,4 +39,5 @@ private:
|
||||
std::stringstream _stream;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -92,7 +92,7 @@ std::unique_ptr<Fluxmap> sqlReadFlux(sqlite3* db, int track, int side)
|
||||
const uint8_t* blobptr = (const uint8_t*) sqlite3_column_blob(stmt, 0);
|
||||
size_t bloblen = sqlite3_column_bytes(stmt, 0);
|
||||
|
||||
fluxmap->appendIntervals(blobptr, bloblen);
|
||||
fluxmap->appendBytes(blobptr, bloblen);
|
||||
}
|
||||
sqlCheck(db, sqlite3_finalize(stmt));
|
||||
return fluxmap;
|
||||
|
||||
@@ -29,14 +29,10 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
|
||||
auto writeFlux = [&](uint32_t sclk)
|
||||
{
|
||||
int ticks = (double)sclk * TICKS_PER_SCLK;
|
||||
while (ticks >= 0x100)
|
||||
{
|
||||
fluxmap->appendInterval(0);
|
||||
ticks -= 0x100;
|
||||
}
|
||||
fluxmap->appendInterval((uint8_t)ticks);
|
||||
fluxmap->appendInterval(ticks);
|
||||
};
|
||||
|
||||
uint32_t extrasclks = 0;
|
||||
for (;;)
|
||||
{
|
||||
int b = f.get(); /* returns -1 or UNSIGNED char */
|
||||
@@ -64,7 +60,8 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
|
||||
{
|
||||
/* Flux2: double byte value */
|
||||
b = (b<<8) | f.get();
|
||||
writeFlux(b);
|
||||
writeFlux(extrasclks + b);
|
||||
extrasclks = 0;
|
||||
}
|
||||
else if (b == 0x08)
|
||||
{
|
||||
@@ -82,23 +79,23 @@ std::unique_ptr<Fluxmap> readStream(const std::string& path, unsigned track, uns
|
||||
f.get();
|
||||
}
|
||||
else if (b == 0x0b)
|
||||
{ /* Ovl16: the next block is 0x10000 sclks longer than normal.
|
||||
* FluxEngine can't handle long transitions, and implementing
|
||||
* this is complicated, so we just bodge it.
|
||||
*/
|
||||
writeFlux(0x10000);
|
||||
{
|
||||
/* Ovl16: the next block is 0x10000 sclks longer than normal. */
|
||||
extrasclks += 0x10000;
|
||||
}
|
||||
else if (b == 0x0c)
|
||||
{
|
||||
/* Flux3: triple byte value */
|
||||
int ticks = f.get() << 8;
|
||||
ticks |= f.get();
|
||||
writeFlux(ticks);
|
||||
writeFlux(extrasclks + ticks);
|
||||
extrasclks = 0;
|
||||
}
|
||||
else if ((b >= 0x0e) && (b <= 0xff))
|
||||
{
|
||||
/* Flux1: single byte value */
|
||||
writeFlux(b);
|
||||
writeFlux(extrasclks + b);
|
||||
extrasclks = 0;
|
||||
}
|
||||
else
|
||||
Error() << fmt::format(
|
||||
|
||||
17
lib/usb.cc
17
lib/usb.cc
@@ -43,8 +43,10 @@ static void usb_init()
|
||||
Error() << "could not claim interface: " << usberror(i);
|
||||
|
||||
int version = usbGetVersion();
|
||||
if (version > FLUXENGINE_VERSION)
|
||||
Error() << "this version of the client is too old for this FluxEngine";
|
||||
if (version != FLUXENGINE_VERSION)
|
||||
Error() << "your FluxEngine firmware is at version " << version
|
||||
<< " but the client is for version " << FLUXENGINE_VERSION
|
||||
<< "; please upgrade";
|
||||
}
|
||||
|
||||
static int usb_cmd_send(void* ptr, int len)
|
||||
@@ -201,7 +203,7 @@ std::unique_ptr<Fluxmap> usbRead(int side, int revolutions)
|
||||
int len = large_bulk_transfer(FLUXENGINE_DATA_IN_EP, buffer);
|
||||
buffer.resize(len);
|
||||
|
||||
fluxmap->appendIntervals(buffer);
|
||||
fluxmap->appendBytes(buffer);
|
||||
|
||||
await_reply<struct any_frame>(F_FRAME_READ_REPLY);
|
||||
return fluxmap;
|
||||
@@ -213,13 +215,8 @@ void usbWrite(int side, const Fluxmap& fluxmap)
|
||||
|
||||
/* Convert from intervals to absolute timestamps. */
|
||||
|
||||
std::vector<uint8_t> buffer(safelen);
|
||||
uint8_t clock = 0;
|
||||
for (unsigned i=0; i<safelen; i++)
|
||||
{
|
||||
clock += fluxmap[i];
|
||||
buffer[i] = clock;
|
||||
}
|
||||
std::vector<uint8_t> buffer(fluxmap.rawBytes());
|
||||
buffer.resize(safelen);
|
||||
|
||||
struct write_frame f = {
|
||||
.f = { .type = F_FRAME_WRITE_CMD, .size = sizeof(f) },
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
enum
|
||||
{
|
||||
FLUXENGINE_VERSION = 1,
|
||||
FLUXENGINE_VERSION = 2,
|
||||
|
||||
FLUXENGINE_VID = 0x1209,
|
||||
FLUXENGINE_PID = 0x6e00,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "globals.h"
|
||||
#include "flags.h"
|
||||
#include "fluxmap.h"
|
||||
#include "writer.h"
|
||||
|
||||
int main(int argc, const char* argv[])
|
||||
@@ -7,7 +8,12 @@ int main(int argc, const char* argv[])
|
||||
setWriterDefaultDest(":t=0-81:s=0-1");
|
||||
Flag::parseFlags(argc, argv);
|
||||
|
||||
writeTracks(NULL);
|
||||
writeTracks(
|
||||
[](int physicalTrack, int physicalSide) -> std::unique_ptr<Fluxmap>
|
||||
{
|
||||
return std::unique_ptr<Fluxmap>();
|
||||
}
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -62,15 +62,12 @@ int main(int argc, const char* argv[])
|
||||
nanoseconds_t nextclock = clockPeriod;
|
||||
|
||||
nanoseconds_t now = 0;
|
||||
int cursor = 0;
|
||||
size_t cursor = 0;
|
||||
nanoseconds_t seekto = seekFlag*1000000.0;
|
||||
int ticks = 0;
|
||||
while (cursor < fluxmap->bytes())
|
||||
{
|
||||
int interval = (*fluxmap)[cursor++];
|
||||
if (interval == 0)
|
||||
interval = 0x100;
|
||||
ticks += interval;
|
||||
ticks += fluxmap->getAndIncrement(cursor);
|
||||
|
||||
now = ticks * NS_PER_TICK;
|
||||
if (now >= seekto)
|
||||
@@ -81,10 +78,7 @@ int main(int argc, const char* argv[])
|
||||
nanoseconds_t lasttransition = 0;
|
||||
while (cursor < fluxmap->bytes())
|
||||
{
|
||||
int interval = (*fluxmap)[cursor++];
|
||||
if (interval == 0)
|
||||
interval = 0x100;
|
||||
ticks += interval;
|
||||
ticks += fluxmap->getAndIncrement(cursor);
|
||||
|
||||
nanoseconds_t transition = ticks*NS_PER_TICK;
|
||||
nanoseconds_t next;
|
||||
|
||||
@@ -51,7 +51,7 @@ static int charToInt(char c)
|
||||
|
||||
int main(int argc, const char* argv[])
|
||||
{
|
||||
setWriterDefaultDest(":t=0-77:s=0");
|
||||
setWriterDefaultDest(":d=0:t=0-77:s=0");
|
||||
Flag::parseFlags(argc, argv);
|
||||
|
||||
SectorSet allSectors;
|
||||
|
||||
@@ -24,8 +24,6 @@ int main(int argc, const char* argv[])
|
||||
Flag::parseFlags(argc, argv);
|
||||
|
||||
unsigned ticksPerInterval = (unsigned) (interval * TICKS_PER_US);
|
||||
if (ticksPerInterval > 0xff)
|
||||
Error() << "interval too long";
|
||||
|
||||
writeTracks(
|
||||
[&](int physicalTrack, int physicalSide) -> std::unique_ptr<Fluxmap>
|
||||
@@ -33,7 +31,7 @@ int main(int argc, const char* argv[])
|
||||
std::unique_ptr<Fluxmap> fluxmap(new Fluxmap);
|
||||
|
||||
while (fluxmap->duration() < (sequenceLength*1000000.0))
|
||||
fluxmap->appendIntervals({ (uint8_t)ticksPerInterval });
|
||||
fluxmap->appendInterval(ticksPerInterval);
|
||||
|
||||
return fluxmap;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user