<br />
<b>Warning</b>:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/json/FormatJson.php</b> on line <b>297</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $ellipsis declared before required parameter $getSubstring is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>3560</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $adjustLength declared before required parameter $getSubstring is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $prefix declared before required parameter $code is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>4478</b><br />
<br />
<b>Warning</b>:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/LanguageConverter.php</b> on line <b>773</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::open($save_path, $session_name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>199</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>214</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::read($id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>228</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::write($id, $dataStr) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>256</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::destroy($id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>362</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>383</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>70</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>80</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>75</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\ResultWrapper::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php</b> on line <b>117</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\ResultWrapper::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php</b> on line <b>90</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>625</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>631</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>643</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>637</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>655</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>649</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>665</b><br />
<br />
<b>Deprecated</b>:  Return type of & MediaWiki\Session\Session::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>678</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>688</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>693</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $style declared before required parameter $ts is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php</b> on line <b>176</b><br />
<br />
<b>Warning</b>:  Private methods cannot be final as they are never overridden by other classes in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/actions/Action.php</b> on line <b>67</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $type declared before required parameter $format is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/Message.php</b> on line <b>1125</b><br />
<br />
<b>Deprecated</b>:  Message implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/Message.php</b> on line <b>159</b><br />
<br />
<b>Deprecated</b>:  RawMessage implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/RawMessage.php</b> on line <b>34</b><br />
<br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/pager/ReverseChronologicalPager.php</b> on line <b>176</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property RequestContext::$recursion is deprecated in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/context/RequestContext.php</b> on line <b>326</b><br />
<br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Parser.php</b> on line <b>4269</b><br />
<br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Parser.php</b> on line <b>4272</b><br />
<br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Parser.php</b> on line <b>4278</b><br />
<br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Parser.php</b> on line <b>4280</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Parser::$mPreprocessorClass is deprecated in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Parser.php</b> on line <b>279</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Parser::$extCite is deprecated in <b>/www/htdocs/w0069e04/sonic-potions/wiki/extensions/Cite/includes/Cite.php</b> on line <b>1296</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property PPDStack::$accum is deprecated in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/parser/Preprocessor_DOM.php</b> on line <b>845</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $text declared before required parameter $classes is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/linker/LinkRenderer.php</b> on line <b>247</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $label declared before required parameter $alt is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/Linker.php</b> on line <b>507</b><br />
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.sonic-potions.com/index.php?action=history&amp;feed=atom&amp;title=Firmware_spelunking</id>
	<title>Firmware spelunking - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sonic-potions.com/index.php?action=history&amp;feed=atom&amp;title=Firmware_spelunking"/>
	<link rel="alternate" type="text/html" href="http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;action=history"/>
	<updated>2026-04-08T03:40:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
<br />
<b>Deprecated</b>:  Optional parameter $attribs declared before required parameter $contents is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/Xml.php</b> on line <b>131</b><br />
	<entry>
		<id>http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=64&amp;oldid=prev</id>
		<title>Comboy: /* Communications */</title>
		<link rel="alternate" type="text/html" href="http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=64&amp;oldid=prev"/>
		<updated>2014-02-27T17:53:20Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Communications&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:53, 27 February 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l135&quot; &gt;Line 135:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 135:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Communications ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Communications ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mainboard (stm32) &amp;lt;-&amp;gt; frontpanel(AVR) =&amp;gt; UART&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SD-Card (AVR + STM32) =&amp;gt; SPI&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Codec &amp;lt;-&amp;gt; STM32 =&amp;gt; I2S&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sound ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sound ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sequencer ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sequencer ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Comboy</name></author>
		
	</entry>
	<entry>
		<id>http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=58&amp;oldid=prev</id>
		<title>Niklasni1: Created page with &quot;This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.  == Overview ==  The drumsynth firmware (ie., ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=58&amp;oldid=prev"/>
		<updated>2014-02-26T12:34:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.  == Overview ==  The drumsynth firmware (ie., ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The drumsynth firmware (ie., not the interface board) is divided into a few logical parts: the hardware handling, the communications interfaces (MIDI via UART and USB, SD over SPI), the sound generation and the sequencer.&lt;br /&gt;
&lt;br /&gt;
=== Files and folders ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  ├── AudioCodecManager&lt;br /&gt;
  │   ├── AudioCodecManager.c&lt;br /&gt;
  │   └── AudioCodecManager.h&lt;br /&gt;
  ├── config.h&lt;br /&gt;
  ├── datatypes.h&lt;br /&gt;
  ├── DSPAudio &lt;br /&gt;
  │   ├── 1PoleLp.c &lt;br /&gt;
  │   ├── 1PoleLp.h&lt;br /&gt;
  │   ├── automationNode.c&lt;br /&gt;
  │   ├── automationNode.h&lt;br /&gt;
  │   ├── BufferTools.c&lt;br /&gt;
  │   ├── BufferTools.h &lt;br /&gt;
  │   ├── CymbalVoice.c &lt;br /&gt;
  │   ├── CymbalVoice.h&lt;br /&gt;
  │   ├── Decay.c&lt;br /&gt;
  │   ├── Decay.h&lt;br /&gt;
  │   ├── distortion.c&lt;br /&gt;
  │   ├── distortion.h&lt;br /&gt;
  │   ├── dither.c&lt;br /&gt;
  │   ├── dither.h&lt;br /&gt;
  │   ├── DrumVoice.c&lt;br /&gt;
  │   ├── DrumVoice.h&lt;br /&gt;
  │   ├── HiHat.c&lt;br /&gt;
  │   ├── HiHat.h&lt;br /&gt;
  │   ├── lfo.c&lt;br /&gt;
  │   ├── lfo.h&lt;br /&gt;
  │   ├── mixer.c&lt;br /&gt;
  │   ├── mixer.h&lt;br /&gt;
  │   ├── modulationNode.c&lt;br /&gt;
  │   ├── modulationNode.h&lt;br /&gt;
  │   ├── Oscillator.c&lt;br /&gt;
  │   ├── Oscillator.h&lt;br /&gt;
  │   ├── random.c&lt;br /&gt;
  │   ├── random.h&lt;br /&gt;
  │   ├── ResonantFilter.c&lt;br /&gt;
  │   ├── ResonantFilter.h&lt;br /&gt;
  │   ├── Samples.c&lt;br /&gt;
  │   ├── Samples.h&lt;br /&gt;
  │   ├── SlopeEg2.c&lt;br /&gt;
  │   ├── SlopeEg2.h&lt;br /&gt;
  │   ├── snapEg.c&lt;br /&gt;
  │   ├── snapEg.h&lt;br /&gt;
  │   ├── Snare.c&lt;br /&gt;
  │   ├── Snare.h&lt;br /&gt;
  │   ├── squareRootLut.c&lt;br /&gt;
  │   ├── squareRootLut.h&lt;br /&gt;
  │   ├── transientGenerator.c&lt;br /&gt;
  │   ├── transientGenerator.h&lt;br /&gt;
  │   ├── transientTables.c&lt;br /&gt;
  │   ├── transientTables.h&lt;br /&gt;
  │   ├── wavetable.c&lt;br /&gt;
  │   └── wavetable.h&lt;br /&gt;
  ├── globals.h&lt;br /&gt;
  ├── hardfaultHandler.c&lt;br /&gt;
  ├── hardfault.S&lt;br /&gt;
  ├── Hardware&lt;br /&gt;
  │   ├── cs4344_cs5343.c&lt;br /&gt;
  │   ├── cs4344_cs5343.h&lt;br /&gt;
  │   ├── FIFO.c&lt;br /&gt;
  │   ├── FIFO.h&lt;br /&gt;
  │   ├── SD_FAT&lt;br /&gt;
  │   │   ├── diskIo.c&lt;br /&gt;
  │   │   ├── diskio.h&lt;br /&gt;
  │   │   ├── ff.c&lt;br /&gt;
  │   │   ├── ffconf.h&lt;br /&gt;
  │   │   ├── ff.h&lt;br /&gt;
  │   │   ├── integer.h&lt;br /&gt;
  │   │   ├── SD_Manager.c&lt;br /&gt;
  │   │   ├── SD_Manager.h&lt;br /&gt;
  │   │   ├── SD_routines.c&lt;br /&gt;
  │   │   ├── sd_routines.h&lt;br /&gt;
  │   │   ├── SPI_routines.c&lt;br /&gt;
  │   │   └── SPI_routines.h&lt;br /&gt;
  │   ├── TriggerOut.c&lt;br /&gt;
  │   ├── TriggerOut.h&lt;br /&gt;
  │   └── USB&lt;br /&gt;
  │       ├── usb_bsp.c&lt;br /&gt;
  │       ├── usbd_desc.c&lt;br /&gt;
  │       ├── usbd_desc.h&lt;br /&gt;
  │       ├── usbd_usr.c&lt;br /&gt;
  │       ├── usb_manager.c&lt;br /&gt;
  │       ├── usb_manager.h&lt;br /&gt;
  │       ├── usb_midi_core.c&lt;br /&gt;
  │       └── usb_midi_core.h&lt;br /&gt;
  ├── main.c&lt;br /&gt;
  ├── MIDI&lt;br /&gt;
  │   ├── frontPanelParser.c&lt;br /&gt;
  │   ├── frontPanelParser.h&lt;br /&gt;
  │   ├── MidiMessages.h&lt;br /&gt;
  │   ├── MidiNoteNumbers.h&lt;br /&gt;
  │   ├── MidiParser.c&lt;br /&gt;
  │   ├── MidiParser.h&lt;br /&gt;
  │   ├── MidiVoiceControl.c&lt;br /&gt;
  │   ├── MidiVoiceControl.h&lt;br /&gt;
  │   ├── ParameterArray.c&lt;br /&gt;
  │   ├── ParameterArray.h&lt;br /&gt;
  │   ├── Uart.c&lt;br /&gt;
  │   ├── Uart.h&lt;br /&gt;
  │   └── valueShaper.h&lt;br /&gt;
  ├── SampleRom&lt;br /&gt;
  │   ├── flash_if.c&lt;br /&gt;
  │   ├── flash_if.h&lt;br /&gt;
  │   ├── SampleMemory.c&lt;br /&gt;
  │   └── SampleMemory.h&lt;br /&gt;
  ├── Sequencer&lt;br /&gt;
  │   ├── clockSync.c&lt;br /&gt;
  │   ├── clockSync.h&lt;br /&gt;
  │   ├── EuklidGenerator.c&lt;br /&gt;
  │   ├── EuklidGenerator.h&lt;br /&gt;
  │   ├── sequencer.c&lt;br /&gt;
  │   ├── sequencer.h&lt;br /&gt;
  │   ├── SomData.c&lt;br /&gt;
  │   ├── SomData.h&lt;br /&gt;
  │   ├── SomGenerator.c&lt;br /&gt;
  │   └── SomGenerator.h&lt;br /&gt;
  ├── startup_stm32f4xx.S&lt;br /&gt;
  ├── stm32f4xx_conf.h&lt;br /&gt;
  ├── stm32f4xx_it.c&lt;br /&gt;
  ├── stm32f4xx_it.h&lt;br /&gt;
  └── system_stm32f4xx.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware handling ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Communications ==&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
== Sequencer ==&lt;/div&gt;</summary>
		<author><name>Niklasni1</name></author>
		
	</entry>
</feed>