def handleDirectOutput(self): logger.info("direct output") bytes = self.tipi_io.receive() unit = bytes[0] blocks = bytes[1] filename = str(self.tipi_io.receive(), 'latin1').strip() bytes = self.tipi_io.receive() startblock = bytes[1] + (bytes[0] << 8) finfo = bytes[2:] logger.info("unit: %d, blocks: %d, filename: %s, startblock %d", unit, blocks, filename, startblock) localfilename = self.getLocalName(unit, filename) if localfilename is None: logger.info("passing request to next device") self.tipi_io.send([EDVNAME]) return True if os.path.exists(localfilename) and os.path.isdir(localfilename): logger.info("folder with same name exists") self.tipi_io.send([EDEVERR]) return True # check protect flag if os.path.exists(localfilename) and ti_files.isTiFile(localfilename): fh = open(localfilename, "rb") header = bytearray(fh.read())[:128] # if ti_files.isProtected(header): # self.tipi_io.send([EWPROT]) # return True startbyte = 128 + (startblock * 256) endbyte = startbyte + (blocks * 256) if os.path.exists(localfilename) and blocks != 0: fbytes = self.getFileBytes(localfilename) else: raw = bytearray(endbyte - 128) header = ti_files.createHeader(0, filename, raw) logger.debug("header len %d, raw len %d", len(header), len(raw)) fbytes = header + raw logger.debug("created file bytes: %d", len(fbytes)) if blocks == 0: fbytes[10:16] = finfo[0:6] self.saveFile(localfilename, fbytes) logger.info("Accepting request") self.tipi_io.send([SUCCESS]) if blocks == 0: return True blockdata = self.tipi_io.receive() fbytes[startbyte:endbyte] = blockdata self.saveFile(localfilename, fbytes) self.tipi_io.send([SUCCESS]) return True
def create(device_name, unix_file_name, body): nameParts = str(device_name).split('.') tiname = nameParts[len(nameParts) - 1] header = ti_files.createHeader(ti_files.PROGRAM, tiname, body) fdata = bytearray(256 * (len(body) / 256 + 1) + 128) fdata[0:127] = header fdata[128:] = body return ProgramImageFile(fdata)
def create(devname, localPath, pab): nameParts = str(devname).split('.') tiname = nameParts[len(nameParts) - 1] recLen = recordLength(pab) if recLen == 0: recLen = 80 flags = ti_files.VARIABLE if dataType(pab) == INTERNAL: flags |= ti_files.INTERNAL header = ti_files.createHeader(flags, tiname, bytearray(0)) ti_files.setRecordLength(header, recLen) ti_files.setRecordsPerSector(header, int(256 / recLen)) return VariableRecordFile(header, pab)
def create(devname, localpath, pab): nameParts = str(devname).split('.') tiname = nameParts[len(nameParts) - 1] recLen = recordLength(pab) if recLen == 0: recLen = 80 # FIXED is default (or flag clear/unset) flags = 0 if dataType(pab) == INTERNAL: flags |= ti_files.INTERNAL header = ti_files.createHeader(flags, tiname, bytearray(0)) ti_files.setRecordLength(header, recLen) ti_files.setRecordsPerSector(header, int(256 / recLen)) return FixedRecordFile(header, pab)