chiark / gitweb /
Open the serial port in the thread, so it no longer blocks the GUI during auto-detect...
[cura.git] / Cura / avr_isp / ispBase.py
1 import os, struct, sys, time\r
2 \r
3 from serial import Serial\r
4 \r
5 import chipDB\r
6 \r
7 class IspBase():\r
8         def programChip(self, flashData):\r
9                 self.curExtAddr = -1\r
10                 self.chip = chipDB.getChipFromDB(self.getSignature())\r
11                 if self.chip == False:\r
12                         raise IspError("Chip with signature: " + str(self.getSignature()) + "not found")\r
13                 self.chipErase()\r
14                 \r
15                 print("Flashing %i bytes" % len(flashData))\r
16                 self.writeFlash(flashData)\r
17                 print("Verifying %i bytes" % len(flashData))\r
18                 self.verifyFlash(flashData)\r
19 \r
20         #low level ISP commands\r
21         def getSignature(self):\r
22                 sig = []\r
23                 sig.append(self.sendISP([0x30, 0x00, 0x00, 0x00])[3])\r
24                 sig.append(self.sendISP([0x30, 0x00, 0x01, 0x00])[3])\r
25                 sig.append(self.sendISP([0x30, 0x00, 0x02, 0x00])[3])\r
26                 return sig\r
27         \r
28         def chipErase(self):\r
29                 self.sendISP([0xAC, 0x80, 0x00, 0x00])\r
30 \r
31 class IspError():\r
32         def __init__(self, value):\r
33                 self.value = value\r
34         def __str__(self):\r
35                 return repr(self.value)\r