blob: b680c4ad3ec419e04c0d7622734f8f9f91b846ae [file] [log] [blame]
Brian Silverman04fac622014-01-26 18:32:15 -08001#include "bbb/cape_manager.h"
2
3#include <string.h>
4#include <errno.h>
5
6#include "aos/common/time.h"
7
8#include "bbb/cape_flasher.h"
9#include "bbb/hex_byte_reader.h"
10
11namespace bbb {
12
13CapeManager::CapeManager()
14 : uart_(750000), reset_(2, 5, true), custom_bootloader_(2, 3, false) {}
15
16void CapeManager::DownloadHex(const ::std::string &filename) {
17 HexByteReader file(filename);
18 CapeFlasher flasher(&uart_);
19 DoReset(true);
20 flasher.Download(&file);
21 DoReset(false);
22}
23
24void CapeManager::DoReset(bool bootloader) {
Brian Silvermane364e382014-02-08 21:51:33 -080025 static constexpr ::aos::time::Time kWaitTime =
Brian Silverman04fac622014-01-26 18:32:15 -080026 ::aos::time::Time::InSeconds(0.1);
Brian Silvermane364e382014-02-08 21:51:33 -080027 custom_bootloader_.Set(!bootloader);
Brian Silverman8dc9fd42014-02-10 13:35:43 -080028 reset_.Set(false);
Brian Silvermane364e382014-02-08 21:51:33 -080029 ::aos::time::SleepFor(kWaitTime);
Brian Silverman04fac622014-01-26 18:32:15 -080030 reset_.Set(true);
Brian Silvermane364e382014-02-08 21:51:33 -080031 ::aos::time::SleepFor(kWaitTime);
Brian Silverman04fac622014-01-26 18:32:15 -080032}
33
34} // namespace bbb