Use abc for StcBaseProtocol
Use the abc module to declare StcBaseProtocol as an abstract base class and clean up imports while at it.
This commit is contained in:
		@ -21,12 +21,18 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import serial
 | 
					import serial
 | 
				
			||||||
import sys, os, time, struct, re, errno
 | 
					import sys
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					import struct
 | 
				
			||||||
 | 
					import re
 | 
				
			||||||
 | 
					import errno
 | 
				
			||||||
import argparse
 | 
					import argparse
 | 
				
			||||||
import collections
 | 
					import collections
 | 
				
			||||||
from stcgal.models import MCUModelDatabase
 | 
					from stcgal.models import MCUModelDatabase
 | 
				
			||||||
from stcgal.utils import Utils
 | 
					from stcgal.utils import Utils
 | 
				
			||||||
from stcgal.options import *
 | 
					from stcgal.options import Stc89Option, Stc12Option, Stc12AOption, Stc15Option, Stc15AOption
 | 
				
			||||||
 | 
					from abc import ABC, abstractmethod
 | 
				
			||||||
import functools
 | 
					import functools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
@ -46,7 +52,7 @@ class StcProtocolException(Exception):
 | 
				
			|||||||
    pass
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StcBaseProtocol:
 | 
					class StcBaseProtocol(ABC):
 | 
				
			||||||
    """Basic functionality for STC BSL protocols"""
 | 
					    """Basic functionality for STC BSL protocols"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    """magic word that starts a packet"""
 | 
					    """magic word that starts a packet"""
 | 
				
			||||||
@ -103,6 +109,10 @@ class StcBaseProtocol:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return packet[5:-1]
 | 
					        return packet[5:-1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @abstractmethod
 | 
				
			||||||
 | 
					    def write_packet(self, packet_data):
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def read_packet(self):
 | 
					    def read_packet(self):
 | 
				
			||||||
        """Read and check packet from MCU.
 | 
					        """Read and check packet from MCU.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -296,6 +306,16 @@ class StcBaseProtocol:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.initialize_model()
 | 
					        self.initialize_model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @abstractmethod
 | 
				
			||||||
 | 
					    def initialize_status(self, status_packet):
 | 
				
			||||||
 | 
					        """Initialize internal state from status packet"""
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @abstractmethod
 | 
				
			||||||
 | 
					    def initialize_options(self, status_packet):
 | 
				
			||||||
 | 
					        """Initialize options from status packet"""
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def initialize(self, base_protocol = None):
 | 
					    def initialize(self, base_protocol = None):
 | 
				
			||||||
        if base_protocol:
 | 
					        if base_protocol:
 | 
				
			||||||
            self.ser = base_protocol.ser
 | 
					            self.ser = base_protocol.ser
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user