SFBCodeFlow.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00027 #ifndef SFBCODEFLOW_H_
00028 #define SFBCODEFLOW_H_
00029
00030 #include "SFBTypes.h"
00031 #include "SFBConstants.h"
00032 #include "SFBAssert.h"
00033 #include "SFBProvenance.h"
00034 #include "SFBSerial.h"
00035
00036 extern u8 sectorOfAddress(u32 address) ;
00037
00038 extern u32 sectorStart(u8 sectorNumber) ;
00039
00040 extern u32 sectorSize(u8 sectorNumber) ;
00041
00042 extern u32 sectorEnd(u8 sectorNumber) ;
00043
00044 bool plausibleProvenance(SFBProvenance * p, uptr startAddr, uptr endAddr) ;
00045
00046 enum { CHECKSUM_IGNORE, CHECKSUM_CHECK, CHECKSUM_GENERATE };
00047
00048 bool validProvenance(SFBProvenance * p, uptr startAddr, uptr endAddr, int checksumMode=CHECKSUM_CHECK) ;
00049
00050 SFBProvenance * findProvenance(uptr startAddr, uptr endAddr, int checksumMode=CHECKSUM_CHECK) ;
00051
00052 extern void programServerDispatcher(u8 * packet) ;
00053
00054 extern void programServerInit(u8 face) ;
00055
00056 extern void programServerSetSketch(const volatile SFBProvenance * theSketch, u32 startAddress, uptr addressOffset, u8 pflags = 0) ;
00057
00058 extern void printPhSketchInfo(u8 toFace, const volatile SFBProvenance * theSketch) ;
00059
00060 extern bool announcePhSketchInfoIfAny(u8 toFace) ;
00061
00062 enum CodeFlowStatus {
00063 CODE_FLOW_INIT,
00064 CODE_FLOW_IDLE,
00065 CODE_FLOW_ACTIVE,
00066 CODE_FLOW_SUCCEEDED
00067 };
00068 typedef void (*CodeFlowStatusCallback)(u8 face, CodeFlowStatus status) ;
00069
00070 extern void setCodeFlowStatusCallback(CodeFlowStatusCallback ptr) ;
00071
00072 extern int wantPhPacketCodeUpdate(u8 * packet) __attribute__ ((weak));
00073
00074 extern void initProgramServerSketch() __attribute__ ((weak));
00075
00076 #endif