blob: 2e8c8feeac7cf0a1fc7365301f27dd33084cd289 [file] [log] [blame]
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)
}]
}
}
}
]
}
}