add sapi check online
This commit is contained in:
		
							
								
								
									
										32
									
								
								mac_sender.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								mac_sender.c
									
									
									
									
									
								
							| @@ -34,6 +34,7 @@ void MacSender(void *argument) { | |||||||
| 	Status status; | 	Status status; | ||||||
| 	osStatus_t retCode;					// return error code | 	osStatus_t retCode;					// return error code | ||||||
| 	char* strPtr; | 	char* strPtr; | ||||||
|  | 	SapiToken stationStatus; | ||||||
|  |  | ||||||
| 	lastToken = osMemoryPoolAlloc(memPool, osWaitForever); | 	lastToken = osMemoryPoolAlloc(memPool, osWaitForever); | ||||||
| 	queue_macData_id = osMessageQueueNew(4, sizeof(struct queueMsg_t), &queue_macData_attr); | 	queue_macData_id = osMessageQueueNew(4, sizeof(struct queueMsg_t), &queue_macData_attr); | ||||||
| @@ -79,7 +80,9 @@ void MacSender(void *argument) { | |||||||
|  |  | ||||||
| 				// Send one msg from internal queue if exist | 				// Send one msg from internal queue if exist | ||||||
| 				//if (osMemoryPoolGetCount(queue_macData_id) != 0) { // Message in Queue | 				//if (osMemoryPoolGetCount(queue_macData_id) != 0) { // Message in Queue | ||||||
| 				if(osMessageQueueGet(queue_macData_id, &queueMsg, NULL, 0) == 0){ | 				retCode = osMessageQueueGet(queue_macData_id, &queueMsg, NULL, 0); | ||||||
|  | 				CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  | 				if(retCode == 0){ | ||||||
| 					queueMsg.type = TO_PHY; | 					queueMsg.type = TO_PHY; | ||||||
| 					retCode = osMessageQueuePut( | 					retCode = osMessageQueuePut( | ||||||
| 						queue_phyS_id, | 						queue_phyS_id, | ||||||
| @@ -102,7 +105,7 @@ void MacSender(void *argument) { | |||||||
| 				length = msg[2]; | 				length = msg[2]; | ||||||
| 				status.raw = msg[3+length]; | 				status.raw = msg[3+length]; | ||||||
|  |  | ||||||
| 				if(dst.addr == BROADCAST_ADDRESS) { | 				if (dst.addr == BROADCAST_ADDRESS) { | ||||||
| 					retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | 					retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | ||||||
| 					CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | 					CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
| 					sendToken(); | 					sendToken(); | ||||||
| @@ -121,6 +124,8 @@ void MacSender(void *argument) { | |||||||
| 						// Everything is fine, free memory | 						// Everything is fine, free memory | ||||||
| 						retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | 						retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | ||||||
| 						CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | 						CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  | 						retCode = osMemoryPoolFree(memPool, lastSentMsgPtr); | ||||||
|  | 						CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
| 						sendToken(); | 						sendToken(); | ||||||
|  |  | ||||||
| 					} else { | 					} else { | ||||||
| @@ -129,7 +134,7 @@ void MacSender(void *argument) { | |||||||
| 							//retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | 							//retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | ||||||
| 							//CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | 							//CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  |  | ||||||
| 							memcpy(queueMsg.anyPtr, lastSentMsgPtr, sizeof(lastSentMsgPtr)); | 							memcpy(queueMsg.anyPtr, lastSentMsgPtr, lastSentMsgPtr[2]+4); | ||||||
| 							queueMsg.type = TO_PHY; | 							queueMsg.type = TO_PHY; | ||||||
| 							//queueMsg.anyPtr = lastSentMsgPtr; | 							//queueMsg.anyPtr = lastSentMsgPtr; | ||||||
| 							retCode = osMessageQueuePut( | 							retCode = osMessageQueuePut( | ||||||
| @@ -240,7 +245,7 @@ void MacSender(void *argument) { | |||||||
| 					status.ack = 0; | 					status.ack = 0; | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 				msg = osMemoryPoolAlloc(memPool, 0); // TODO - Leak of memory | 				msg = osMemoryPoolAlloc(memPool, 0); | ||||||
| 				if(msg == NULL) { | 				if(msg == NULL) { | ||||||
| 					printf("Memory allocation failed #1\r\n"); | 					printf("Memory allocation failed #1\r\n"); | ||||||
| 					assert(false); | 					assert(false); | ||||||
| @@ -255,6 +260,10 @@ void MacSender(void *argument) { | |||||||
| 				retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | 				retCode = osMemoryPoolFree(memPool, queueMsg.anyPtr); | ||||||
| 				CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | 				CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  |  | ||||||
|  | 				stationStatus.raw = lastToken[dst.addr+1]; | ||||||
|  |  | ||||||
|  | 				if(stationStatus.chat == 1) { | ||||||
|  |  | ||||||
| 				if(dst.addr != BROADCAST_ADDRESS) { | 				if(dst.addr != BROADCAST_ADDRESS) { | ||||||
| 					if(dst.sapi == CHAT_SAPI) { | 					if(dst.sapi == CHAT_SAPI) { | ||||||
| 						lastSentMsgPtr = osMemoryPoolAlloc(memPool, 0); | 						lastSentMsgPtr = osMemoryPoolAlloc(memPool, 0); | ||||||
| @@ -275,6 +284,21 @@ void MacSender(void *argument) { | |||||||
| 					osPriorityNormal, | 					osPriorityNormal, | ||||||
| 					0); | 					0); | ||||||
| 				CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | 				CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  |  | ||||||
|  | 				} else { | ||||||
|  | 					strPtr = queueMsg.anyPtr; | ||||||
|  | 					sprintf(strPtr, "%d is not online\0", dst.addr+1); | ||||||
|  | 					queueMsg.type = MAC_ERROR; | ||||||
|  | 					queueMsg.addr = src.addr; | ||||||
|  | 					queueMsg.anyPtr = strPtr; | ||||||
|  | 					retCode = osMessageQueuePut( | ||||||
|  | 						queue_lcd_id, | ||||||
|  | 						&queueMsg, | ||||||
|  | 						osPriorityNormal, | ||||||
|  | 						0); | ||||||
|  | 					CheckRetCode(retCode, __LINE__, __FILE__, CONTINUE); | ||||||
|  | 				} | ||||||
|  |  | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -153,7 +153,56 @@ | |||||||
|           <Name>UL2CM3(-S0 -C0 -P0 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F746NGHx$CMSIS\Flash\STM32F7x_1024.FLM))</Name> |           <Name>UL2CM3(-S0 -C0 -P0 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F746NGHx$CMSIS\Flash\STM32F7x_1024.FLM))</Name> | ||||||
|         </SetRegEntry> |         </SetRegEntry> | ||||||
|       </TargetDriverDllRegistry> |       </TargetDriverDllRegistry> | ||||||
|       <Breakpoint/> |       <Breakpoint> | ||||||
|  |         <Bp> | ||||||
|  |           <Number>0</Number> | ||||||
|  |           <Type>0</Type> | ||||||
|  |           <LineNumber>18</LineNumber> | ||||||
|  |           <EnabledFlag>1</EnabledFlag> | ||||||
|  |           <Address>134311438</Address> | ||||||
|  |           <ByteObject>0</ByteObject> | ||||||
|  |           <HtxType>0</HtxType> | ||||||
|  |           <ManyObjects>0</ManyObjects> | ||||||
|  |           <SizeOfObject>0</SizeOfObject> | ||||||
|  |           <BreakByAccess>0</BreakByAccess> | ||||||
|  |           <BreakIfRCount>1</BreakIfRCount> | ||||||
|  |           <Filename>.\mac_receiver.c</Filename> | ||||||
|  |           <ExecCommand></ExecCommand> | ||||||
|  |           <Expression>\\tokenring_project\mac_receiver.c\18</Expression> | ||||||
|  |         </Bp> | ||||||
|  |         <Bp> | ||||||
|  |           <Number>1</Number> | ||||||
|  |           <Type>0</Type> | ||||||
|  |           <LineNumber>263</LineNumber> | ||||||
|  |           <EnabledFlag>1</EnabledFlag> | ||||||
|  |           <Address>134256140</Address> | ||||||
|  |           <ByteObject>0</ByteObject> | ||||||
|  |           <HtxType>0</HtxType> | ||||||
|  |           <ManyObjects>0</ManyObjects> | ||||||
|  |           <SizeOfObject>0</SizeOfObject> | ||||||
|  |           <BreakByAccess>0</BreakByAccess> | ||||||
|  |           <BreakIfRCount>1</BreakIfRCount> | ||||||
|  |           <Filename>.\mac_sender.c</Filename> | ||||||
|  |           <ExecCommand></ExecCommand> | ||||||
|  |           <Expression>\\tokenring_project\mac_sender.c\263</Expression> | ||||||
|  |         </Bp> | ||||||
|  |         <Bp> | ||||||
|  |           <Number>2</Number> | ||||||
|  |           <Type>0</Type> | ||||||
|  |           <LineNumber>199</LineNumber> | ||||||
|  |           <EnabledFlag>1</EnabledFlag> | ||||||
|  |           <Address>0</Address> | ||||||
|  |           <ByteObject>0</ByteObject> | ||||||
|  |           <HtxType>0</HtxType> | ||||||
|  |           <ManyObjects>0</ManyObjects> | ||||||
|  |           <SizeOfObject>0</SizeOfObject> | ||||||
|  |           <BreakByAccess>0</BreakByAccess> | ||||||
|  |           <BreakIfRCount>0</BreakIfRCount> | ||||||
|  |           <Filename>.\main.c</Filename> | ||||||
|  |           <ExecCommand></ExecCommand> | ||||||
|  |           <Expression></Expression> | ||||||
|  |         </Bp> | ||||||
|  |       </Breakpoint> | ||||||
|       <WatchWindow1> |       <WatchWindow1> | ||||||
|         <Ww> |         <Ww> | ||||||
|           <count>0</count> |           <count>0</count> | ||||||
| @@ -175,6 +224,11 @@ | |||||||
|           <WinNumber>1</WinNumber> |           <WinNumber>1</WinNumber> | ||||||
|           <ItemText>lastToken</ItemText> |           <ItemText>lastToken</ItemText> | ||||||
|         </Ww> |         </Ww> | ||||||
|  |         <Ww> | ||||||
|  |           <count>4</count> | ||||||
|  |           <WinNumber>1</WinNumber> | ||||||
|  |           <ItemText>memPool</ItemText> | ||||||
|  |         </Ww> | ||||||
|       </WatchWindow1> |       </WatchWindow1> | ||||||
|       <MemoryWindow1> |       <MemoryWindow1> | ||||||
|         <Mm> |         <Mm> | ||||||
| @@ -244,6 +298,13 @@ | |||||||
|       <pszMrulep></pszMrulep> |       <pszMrulep></pszMrulep> | ||||||
|       <pSingCmdsp></pSingCmdsp> |       <pSingCmdsp></pSingCmdsp> | ||||||
|       <pMultCmdsp></pMultCmdsp> |       <pMultCmdsp></pMultCmdsp> | ||||||
|  |       <LogicAnalyzers> | ||||||
|  |         <Wi> | ||||||
|  |           <IntNumber>0</IntNumber> | ||||||
|  |           <FirstString>`memPool</FirstString> | ||||||
|  |           <SecondString>FF00000000000000000000000000E0FFFFFFEF41000000000000000000000000000000006D656D506F6F6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F1000000000000000000000000000000000000000726D0108</SecondString> | ||||||
|  |         </Wi> | ||||||
|  |       </LogicAnalyzers> | ||||||
|       <DebugDescription> |       <DebugDescription> | ||||||
|         <Enable>1</Enable> |         <Enable>1</Enable> | ||||||
|         <EnableFlashSeq>0</EnableFlashSeq> |         <EnableFlashSeq>0</EnableFlashSeq> | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
|       <TargetName>Target 1</TargetName> |       <TargetName>Target 1</TargetName> | ||||||
|       <ToolsetNumber>0x4</ToolsetNumber> |       <ToolsetNumber>0x4</ToolsetNumber> | ||||||
|       <ToolsetName>ARM-ADS</ToolsetName> |       <ToolsetName>ARM-ADS</ToolsetName> | ||||||
|       <pCCUsed>5060960::V5.06 update 7 (build 960)::..\..\Program Files (x86)\ARM_Compiler_5.06u7</pCCUsed> |       <pCCUsed>5060960::V5.06 update 7 (build 960)::C:\Program Files (x86)\ARM_Compiler_5.06u7</pCCUsed> | ||||||
|       <uAC6>0</uAC6> |       <uAC6>0</uAC6> | ||||||
|       <TargetOption> |       <TargetOption> | ||||||
|         <TargetCommonOption> |         <TargetCommonOption> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user