func CreateRequestContextWithInfoCallback()

in plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go [342:382]


func CreateRequestContextWithInfoCallback(cBusMessage readWriteModel.CBusMessage, infoCallBack func(string)) readWriteModel.RequestContext {
	if infoCallBack == nil {
		infoCallBack = func(_ string) {}
	}
	switch cBusMessage := cBusMessage.(type) {
	case readWriteModel.CBusMessageToServer:
		switch request := cBusMessage.GetRequest().(type) {
		case readWriteModel.RequestDirectCommandAccess:
			sendIdentifyRequestBefore := false
			infoCallBack("CAL request detected")
			switch request.GetCalData().(type) {
			case readWriteModel.CALDataIdentify:
				sendIdentifyRequestBefore = true
			}
			return readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
		case readWriteModel.RequestCommand:
			switch command := request.GetCbusCommand().(type) {
			case readWriteModel.CBusCommandPointToPoint:
				sendIdentifyRequestBefore := false
				infoCallBack("CAL request detected")
				switch command.GetCommand().GetCalData().(type) {
				case readWriteModel.CALDataIdentify:
					sendIdentifyRequestBefore = true
				}
				return readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
			}
		case readWriteModel.RequestObsolete:
			sendIdentifyRequestBefore := false
			infoCallBack("CAL request detected")
			switch request.GetCalData().(type) {
			case readWriteModel.CALDataIdentify:
				sendIdentifyRequestBefore = true
			}
			return readWriteModel.NewRequestContext(sendIdentifyRequestBefore)
		}
	case readWriteModel.CBusMessageToClient:
		// We received a request, so we need to reset our flags
		return readWriteModel.NewRequestContext(false)
	}
	return readWriteModel.NewRequestContext(false)
}