• R/O
  • SSH
  • HTTPS

pasripherals: Commit


Commit MetaInfo

Revision31 (tree)
Time2019-09-15 02:38:15
Authorderekwildstar

Log Message

- Documentação atualizada

Change Summary

Incremental Difference

--- trunk/src/lib/UPasRipherals.pas (revision 30)
+++ trunk/src/lib/UPasRipherals.pas (revision 31)
@@ -11,7 +11,7 @@
1111 type
1212 TCustomPasRipherals = class;
1313
14- { TPRSavedState }
14+ { TSavedState }
1515
1616 //: Este record é usado pela propriedade @Link(TCustomPasRipherals.State) e
1717 //: representa os estados de todos os registradores do RPI. Os nomes dos
@@ -50,14 +50,14 @@
5050 //: @Member(GPLEV0 Este membro representa o registrador GPLEV0, o qual
5151 //: contém o primeiro conjunto de campos de níveis lógicos dos GPIO,
5252 //: abrangendo os GPIO de 0 a 31, ou seja, cada bit representa o estado de um
53- //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja um o
53+ //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja 1, o
5454 //: valor do nível lógio é 1)
5555 //: @Member(GPLEV1 Este membro representa o registrador GPLEV1, o qual
5656 //: contém o segundo conjunto de campos de níveis lógicos dos GPIO,
5757 //: abrangendo os GPIO de 32 a 53, ou seja, cada bit representa o estado de um
58- //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja um o
58+ //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja 1, o
5959 //: valor do nível lógio é 1)
60- TPRSavedState = record
60+ TSavedState = record
6161 GPFSEL0: UInt32;
6262 GPFSEL1: UInt32;
6363 GPFSEL2: UInt32;
@@ -68,38 +68,39 @@
6868 GPLEV1: UInt32;
6969 end;
7070
71- //: Este subtipo define um range que varia de 0 a 53 e que serve para
72- //: representar cada um dos 54 GPIOs disponíveis no Raspberry PI 3 (segundo o
73- //: datasheet do BCM2837).
74- TPRGPIONumber = 0..53;
75- //: Este subtipo define um range que varia de 0 a 27 e que serve para
76- //: representar os 28 primeiros GPIOs que possuem um pino físico associado.
77- //: Este subtipo pode ser usado em loops ou funções quando se quer limitar o
78- //: acesso a apenas os pinos que são manipuláveis externamente
79- TPRGPIONumberExposed = 0..27;
80- //: Este subtipo representa os 40 pinos físicos do RPI. O Raspberry PI 3 expõe
71+ //: Este tipo define um subconjunto de números que variam de 0 a 53 e que
72+ //: serve para representar cada um dos 54 GPIOs disponíveis no Raspberry PI 3
73+ //: (segundo o datasheet do BCM2837).
74+ TGPIONumber = 0..53;
75+ //: Este tipo define um subconjunto de números que variam de 0 a 27 e que
76+ //: serve para representar os 28 primeiros GPIOs que possuem um pino físico
77+ //: associado. Este tipo pode ser usado em loops ou funções quando se quer
78+ //: limitar o acesso a apenas os pinos que são manipuláveis externamente
79+ TGPIONumberExposed = 0..27;
80+ //: Este tipo representa os 40 pinos físicos do RPI. O Raspberry PI 3 expõe
8181 //: 40 pinos físicos e destes, apenas 28 estão efetivamente associados a algum
8282 //: GPIO. Os outros 12 pinos físicos contém GND e saídas de 5v e 3.3v.
83- //: @SeeAlso(TPRGPIONumberExposed)
84- TPRGPIOPhysicalPinNumber = 1..40;
83+ //: @SeeAlso(TGPIONumberExposed)
84+ TGPIOPhysicalPinNumber = 1..40;
8585 //: Esta enumeração lista todos os possíveis modos dos GPIOs. Cada GPIO pode
8686 //: ter até seis funções alternativas além de entrada e saída. As funções
8787 //: alternativas Alt0 a Alt5 dependem de cada GPIO e a tabela nas páginas 102
8888 //: e 103 do datasheet mostram cada uma delas.
89- //: @value(prgmInput Um GPIO está neste modo para poder aceitar entrada de
89+ //: @value(gmInput Um GPIO está neste modo para poder aceitar entrada de
9090 //: dados (níveis lógicos))
91- //: @value(prgmOutput Um GPIO está neste modo para prover saída de deados
91+ //: @value(gmOutput Um GPIO está neste modo para prover saída de deados
9292 //: (níveis lógicos))
93- //: @value(prgmAlt0 Habilita o modo alternativo 0 para o GPIO)
94- //: @value(prgmAlt1 Habilita o modo alternativo 1 para o GPIO)
95- //: @value(prgmAlt2 Habilita o modo alternativo 2 para o GPIO)
96- //: @value(prgmAlt3 Habilita o modo alternativo 3 para o GPIO)
97- //: @value(prgmAlt4 Habilita o modo alternativo 4 para o GPIO)
98- //: @value(prgmAlt5 Habilita o modo alternativo 5 para o GPIO)
99- TPRGPIOMode = (prgmInput,prgmOutput,prgmAlt5,prgmAlt4,prgmAlt0,prgmAlt1,prgmAlt2,prgmAlt3);
100- //: Este subtipo define um range fixo de 0 a 5, o qual é usado nas funções que
101- //: manipuluam os registradores GPFSEL. Existem seis registradores GPFSEL,
102- //: numerados de 0 a 5, dentre os conjuntos de registradores de GPIO
93+ //: @value(gmAlt0 Habilita o modo alternativo 0 para o GPIO em questão)
94+ //: @value(gmAlt1 Habilita o modo alternativo 1 para o GPIO em questão)
95+ //: @value(gmAlt2 Habilita o modo alternativo 2 para o GPIO em questão)
96+ //: @value(gmAlt3 Habilita o modo alternativo 3 para o GPIO em questão)
97+ //: @value(gmAlt4 Habilita o modo alternativo 4 para o GPIO em questão)
98+ //: @value(gmAlt5 Habilita o modo alternativo 5 para o GPIO em questão)
99+ TGPIOMode = (gmInput,gmOutput,gmAlt5,gmAlt4,gmAlt0,gmAlt1,gmAlt2,gmAlt3);
100+ //: Este tipo define um subconjunto numérico fixo de 0 a 5, o qual é usado nas
101+ //: funções que manipuluam os registradores GPFSEL. Existem seis registradores
102+ //: GPFSEL, numerados de 0 a 5, dentre os conjuntos de registradores de GPIO.
103+ //: @SeeAlso(TGPIOMode)
103104 TPRGPIOModeBank = 0..5;
104105 //: Esta enumeração representa os possíveis estados dos "resistores pull"
105106 //: associados a cada GPIO. Cada GPIO possui um "resitor pull" que serve para
@@ -154,7 +155,7 @@
154155 //: @member(Level Obtém ou configura o nível lógico do GPIO atual)
155156 TPRGPIO = record
156157 private
157- FGPIONumber: TPRGPIONumber;
158+ FGPIONumber: TGPIONumber;
158159 FPasRipherals: TCustomPasRipherals;
159160
160161 // -------------------------------------------------------------------------
@@ -220,12 +221,12 @@
220221
221222 function GetModeDescription: String;
222223 function GetLevel: TPRGPIOLevel;
223- function GetMode: TPRGPIOMode;
224+ function GetMode: TGPIOMode;
224225 procedure SetLevel(AGPIOLevel: TPRGPIOLevel);
225- procedure SetMode(AGPIOMode: TPRGPIOMode);
226+ procedure SetMode(AGPIOMode: TGPIOMode);
226227 procedure SetPullRegister(AGPIOPullRegister: TPRGPIOPullRegister);
227228 public
228- property Mode: TPRGPIOMode read GetMode write SetMode;
229+ property Mode: TGPIOMode read GetMode write SetMode;
229230 property PullRegister: TPRGPIOPullRegister write SetPullRegister;
230231 property ModeDescription: String read GetModeDescription;
231232 property Level: TPRGPIOLevel read GetLevel write SetLevel;
@@ -735,18 +736,18 @@
735736 FRunningAsRoot: Boolean;
736737
737738 function GetClock(AClockId: TPRClockId): TPRClock;
738- function GetGPIO(AGPIONumber: TPRGPIONumber): TPRGPIO;
739+ function GetGPIO(AGPIONumber: TGPIONumber): TPRGPIO;
739740 function GetPWM(APWMChannel: TPRPWMChannel): TPRPWM;
740741 function GetI2C(AController: TPRI2CController; ASlaveAddress: TPRI2CSlaveAddress): TPRI2C;
741742
742743 function GetLevels(ALevelBank: TPRGPIOLevelBank): UInt32;
743744 function GetModes(AModeBank: TPRGPIOModeBank): UInt32;
744- function GetState: TPRSavedState;
745+ function GetState: TSavedState;
745746 function GetInfo: String;
746747
747748 procedure SetLevels(ALevelBank: TPRGPIOLevelBank; ALevels: UInt32);
748749 procedure SetModes(AModeBank: TPRGPIOModeBank; AModes: UInt32);
749- procedure SetState(ASavedState: TPRSavedState);
750+ procedure SetState(ASavedState: TSavedState);
750751
751752 function ClockBaseAddress: PUInt32;
752753 function GPIOBaseAddress: PUInt32;
@@ -770,12 +771,12 @@
770771 procedure SetBitsValue(ARegister: PUInt32; AValue: UInt32; ABitIndex: UInt8; ABitsCount: UInt8 = 1);
771772
772773 property Clock[AClockId: TPRClockId]: TPRClock read GetClock;
773- property GPIO[AGPIONumber: TPRGPIONumber]: TPRGPIO read GetGPIO;
774+ property GPIO[AGPIONumber: TGPIONumber]: TPRGPIO read GetGPIO;
774775 property PWM[APWMChannel: TPRPWMChannel]: TPRPWM read GetPWM;
775776 property I2C[AController: TPRI2CController; ASlaveAddress: TPRI2CSlaveAddress]: TPRI2C read GetI2C;
776777 property GPIOLevels[ALevelBank: TPRGPIOLevelBank]: UInt32 read GetLevels write SetLevels;
777778 property GPIOModes[AModeBank: TPRGPIOModeBank]: UInt32 read GetModes write SetModes;
778- property State: TPRSavedState read GetState write SetState;
779+ property State: TSavedState read GetState write SetState;
779780 property Info: String read GetInfo;
780781 public
781782 constructor Create; virtual;
@@ -786,17 +787,17 @@
786787 //: número do GPIO correspondente)
787788 //: @Returns(Retorna o número do GPIO correspondente ao número do pino
788789 //: físico informado no parâmetro)
789- //: @SeeAlso(TPRGPIOPhysicalPinNumber)
790- //: @SeeAlso(TPRGPIONumber)
791- function P2G(APhysicalPinNumber: TPRGPIOPhysicalPinNumber): TPRGPIONumber;
790+ //: @SeeAlso(TGPIOPhysicalPinNumber)
791+ //: @SeeAlso(TGPIONumber)
792+ function P2G(APhysicalPinNumber: TGPIOPhysicalPinNumber): TGPIONumber;
792793 //: Retorna o número do pino físico correspondente ao GPIO informado
793794 //: @Param(AGPIONumber Número do GPIO a partir do qual se quer saber o
794795 //: número do pino físico correspondente)
795796 //: @Returns(Retorna o número do pino físico correspondente ao número do
796797 //: GPIO informado no parâmetro)
797- //: @SeeAlso(TPRGPIOPhysicalPinNumber)
798- //: @SeeAlso(TPRGPIONumber)
799- function G2P(AGPIONumber: TPRGPIONumber): TPRGPIOPhysicalPinNumber;
798+ //: @SeeAlso(TGPIOPhysicalPinNumber)
799+ //: @SeeAlso(TGPIONumber)
800+ function G2P(AGPIONumber: TGPIONumber): TGPIOPhysicalPinNumber;
800801 end;
801802
802803 //: Esta é a classe principal do PasRipherals. Instancie-a para ter acesso aos
@@ -1732,7 +1733,7 @@
17321733
17331734 { TPRGPIO }
17341735
1735-function TPRGPIO.GetMode: TPRGPIOMode;
1736+function TPRGPIO.GetMode: TGPIOMode;
17361737 var
17371738 Shift: UInt8;
17381739 begin
@@ -1824,7 +1825,7 @@
18241825
18251826 function TPRGPIO.GetModeDescription: String;
18261827 const
1827- ALTERNATETIVE_FUNCTION_NAMES: array [TPRGPIOModeBank] of array [TPRGPIONumber] of String =
1828+ ALTERNATETIVE_FUNCTION_NAMES: array [TPRGPIOModeBank] of array [TGPIONumber] of String =
18281829 // ALT0
18291830 (('I2C SDA0','I2C SCL0','I2C SDA1','I2C SCL1','GPCLK0','GPCLK1','GPCLK2','SPI0 CE1/'
18301831 ,'SPI0 CE0/','SPI0 MISO','SPI0 MOSI','SPI0 SCLK','PWM0','PWM1','TxD0','RxD0'
@@ -1890,7 +1891,7 @@
18901891 Result := TPRGPIOLevel((RegisterGPLEV^ and RegisterBitValue) shr RegisterBitIndex);
18911892 end;
18921893
1893-procedure TPRGPIO.SetMode(AGPIOMode: TPRGPIOMode);
1894+procedure TPRGPIO.SetMode(AGPIOMode: TGPIOMode);
18941895 var
18951896 Shift: UInt8;
18961897 begin
@@ -1939,7 +1940,7 @@
19391940 Result.FClockId := AClockId;
19401941 end;
19411942
1942-function TCustomPasRipherals.GetGPIO(AGPIONumber: TPRGPIONumber): TPRGPIO;
1943+function TCustomPasRipherals.GetGPIO(AGPIONumber: TGPIONumber): TPRGPIO;
19431944 begin
19441945 Result.FPasRipherals := Self;
19451946 Result.FGPIONumber := AGPIONumber;
@@ -2186,7 +2187,7 @@
21862187 NanoSleep(1000 * AMicroSeconds);
21872188 end;
21882189
2189-function TCustomPasRipherals.P2G(APhysicalPinNumber: TPRGPIOPhysicalPinNumber): TPRGPIONumber;
2190+function TCustomPasRipherals.P2G(APhysicalPinNumber: TGPIOPhysicalPinNumber): TGPIONumber;
21902191 begin
21912192 case APhysicalPinNumber of
21922193 27: Result := 0;
@@ -2222,7 +2223,7 @@
22222223 end;
22232224 end;
22242225
2225-function TCustomPasRipherals.G2P(AGPIONumber: TPRGPIONumber): TPRGPIOPhysicalPinNumber;
2226+function TCustomPasRipherals.G2P(AGPIONumber: TGPIONumber): TGPIOPhysicalPinNumber;
22262227 begin
22272228 case AGPIONumber of
22282229 00: Result := 27;
@@ -2258,9 +2259,9 @@
22582259 end;
22592260 end;
22602261
2261-function TCustomPasRipherals.GetState: TPRSavedState;
2262+function TCustomPasRipherals.GetState: TSavedState;
22622263 begin
2263- Result := Default(TPRSavedState);
2264+ Result := Default(TSavedState);
22642265
22652266 with Result do
22662267 begin
@@ -2281,7 +2282,7 @@
22812282 const
22822283 INFOLINE = '║ %-11u ║ %-19s ║ %-6s ║ %-14s ║ %-11s ║';
22832284 var
2284- G: TPRGPIONumber;
2285+ G: TGPIONumber;
22852286 M: String;
22862287 A: UInt32;
22872288 S: UInt32;
@@ -2296,7 +2297,7 @@
22962297 Result += '║ GPIO NUMBER ║ PHYSICAL PIN NUMBER ║ MODE ║ NAME ║ LOGIC LEVEL ║'#13#10;
22972298 Result += '╠═════════════╬═════════════════════╬════════╬════════════════╬═════════════╣'#13#10;
22982299
2299- for G := Low(TPRGPIONumber) to High(TPRGPIONumber) do
2300+ for G := Low(TGPIONumber) to High(TGPIONumber) do
23002301 begin
23012302 case GPIO[G].Mode of
23022303 prgmAlt0: M := 'ALT0';
@@ -2363,12 +2364,12 @@
23632364 end;
23642365 end;
23652366
2366-procedure TCustomPasRipherals.SetState(ASavedState: TPRSavedState);
2367+procedure TCustomPasRipherals.SetState(ASavedState: TSavedState);
23672368 begin
23682369 // Compara o valor padrão do record com o parâmetro para saber se foi
23692370 // informado um valor válido. Aparentemente CompareMem não funciona bem com
23702371 // shortstrings, então, tenha cuidado;
2371- if CompareMem(@Default(TPRSavedState),@ASavedState,SizeOf(TPRSavedState)) then
2372+ if CompareMem(@Default(TSavedState),@ASavedState,SizeOf(TSavedState)) then
23722373 raise EPasRipherals.Create('Não é possível configurar o estado usando parâmetros vazios')
23732374 else
23742375 with ASavedState do
Show on old repository browser