Convert over internal pseudo-function macros to true inline functions for added type-safety and compile-checking.
This commit is contained in:
		
							parent
							
								
									2461ae508c
								
							
						
					
					
						commit
						9b0e4b8356
					
				
					 21 changed files with 1689 additions and 1055 deletions
				
			
		| 
						 | 
				
			
			@ -85,6 +85,44 @@
 | 
			
		|||
			#define DATAFLASH_PAGES                      8192
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
 | 
			
		||||
			 *  The AVR's SPI driver MUST be initialized before any of the dataflash commands are used.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void Dataflash_Init(void)
 | 
			
		||||
			{
 | 
			
		||||
				DATAFLASH_CHIPCS_DDR  |= DATAFLASH_CHIPCS_MASK;
 | 
			
		||||
				DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Determines the currently selected dataflash chip.
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected
 | 
			
		||||
			 *  or a DATAFLASH_CHIPn mask (where n is the chip number).
 | 
			
		||||
			 */
 | 
			
		||||
			static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
 | 
			
		||||
			static inline uint8_t Dataflash_GetSelectedChip(void)
 | 
			
		||||
			{
 | 
			
		||||
				return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Selects the given dataflash chip.
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of DATAFLASH_CHIPn mask (where n is
 | 
			
		||||
			 *              the chip number).
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
 | 
			
		||||
			static inline void Dataflash_SelectChip(const uint8_t ChipMask)
 | 
			
		||||
			{
 | 
			
		||||
				DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Deselects the current dataflash chip, so that no dataflash is selected. */
 | 
			
		||||
			static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE;
 | 
			
		||||
			static inline void Dataflash_DeselectChip(void)
 | 
			
		||||
			{
 | 
			
		||||
				Dataflash_SelectChip(DATAFLASH_NO_CHIP);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Selects a dataflash IC from the given page number, which should range from 0 to
 | 
			
		||||
			 *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one
 | 
			
		||||
			 *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside
 | 
			
		||||
| 
						 | 
				
			
			@ -103,6 +141,28 @@
 | 
			
		|||
 | 
			
		||||
				Dataflash_SelectChip(DATAFLASH_CHIP1);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			/** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive
 | 
			
		||||
			 *  a new command.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void Dataflash_ToggleSelectedChipCS(void)
 | 
			
		||||
			{
 | 
			
		||||
				uint8_t SelectedChipMask = Dataflash_GetSelectedChip();
 | 
			
		||||
					
 | 
			
		||||
				Dataflash_DeselectChip();
 | 
			
		||||
				Dataflash_SelectChip(SelectedChipMask);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
 | 
			
		||||
			 *  memory page program or main memory to buffer transfer.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void Dataflash_WaitWhileBusy(void)
 | 
			
		||||
			{
 | 
			
		||||
				Dataflash_ToggleSelectedChipCS();
 | 
			
		||||
				Dataflash_SendByte(DF_CMD_GETSTATUS);
 | 
			
		||||
				while (!(Dataflash_ReceiveByte() & DF_STATUS_READY));
 | 
			
		||||
				Dataflash_ToggleSelectedChipCS();				
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with
 | 
			
		||||
			 *  dataflash commands which require a complete 24-byte address.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue