| package templates.m2m.sw |
| |
| import com.google.inject.Inject |
| import com.inchron.realtime.root.model.Model |
| import org.eclipse.app4mc.amalthea.model.SWModel |
| import templates.AbstractAmaltheaInchronTransformer |
| import templates.utils.AmltCacheModel |
| import org.eclipse.app4mc.amalthea.model.TaskScheduler |
| import org.eclipse.app4mc.amalthea.model.InterruptController |
| |
| class SWTransformer extends AbstractAmaltheaInchronTransformer { |
| |
| var AmltCacheModel cacheModel |
| |
| @Inject TaskTransformer taskTransformer |
| @Inject ISRTransformer isrTransformer |
| |
| public def transformSWModel(SWModel amltSwModel, Model inchronModel) { |
| |
| this.inchronModel=inchronModel |
| |
| cacheModel=customObjsStore.getInstance(AmltCacheModel) |
| |
| val inchronScheduler_amltSchedulerMap=cacheModel.getInchronScheduler_amltSchedulerMap() |
| |
| inchronScheduler_amltSchedulerMap.keySet.forEach[inchronScheduler| |
| { |
| var amltScheduler=inchronScheduler_amltSchedulerMap.get(inchronScheduler) |
| |
| if(amltScheduler !=null){ |
| |
| if(amltScheduler instanceof TaskScheduler){ |
| amltScheduler.taskAllocations.forEach[amltTaskAllocation|{ |
| |
| var amltTask=amltTaskAllocation.task |
| |
| var inchronProcess=taskTransformer.createProcess(amltTask) |
| |
| inchronScheduler.schedulables.add(inchronProcess) |
| }] |
| }else if(amltScheduler instanceof InterruptController){ |
| |
| amltScheduler.isrAllocations.forEach[amltISRAllocation|{ |
| var amltISR=amltISRAllocation.isr |
| var inchronProcess=isrTransformer.createProcess(amltISR) |
| inchronScheduler.schedulables.add(inchronProcess) |
| }] |
| } |
| } |
| } |
| ] |
| } |
| } |