added drives
This commit is contained in:
		
							parent
							
								
									df77704d1c
								
							
						
					
					
						commit
						6b3f0760ca
					
				
							
								
								
									
										67
									
								
								src/kernel/peripherals/Drive.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/kernel/peripherals/Drive.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | ||||
| package kernel.peripherals; | ||||
| 
 | ||||
| class Drive implements IPeripheral { | ||||
| 	private final addr:String; | ||||
| 	private final native:cc.periphs.Disk; | ||||
| 
 | ||||
| 	@:allow(kernel.peripherals) | ||||
| 	private function new(native: cc.periphs.Disk,addr: String) { | ||||
| 		this.addr = addr; | ||||
| 		this.native = native; | ||||
| 	} | ||||
| 
 | ||||
| 	public function getAddr():String { | ||||
| 		return this.addr; | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function isDiskPresent(): Bool { | ||||
| 		return this.native.isDiskPresent(); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 		The label of the disk, or `null` if either no disk is inserted or the disk doesn't have a label. | ||||
| 	**/ | ||||
| 	public inline function getDiskLabel(): Null<String> { | ||||
| 		return this.native.getDiskLabel(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function clearDiskLabel() { | ||||
| 		this.native.setDiskLabel(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function setDiskLabel(label: String) { | ||||
| 		this.native.setDiskLabel(label); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function hasData():Bool { | ||||
| 		return this.native.hasData(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function hasAudio():Bool { | ||||
| 		return this.native.hasAudio(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function getMountPath():Null<String> { | ||||
| 		return this.getMountPath(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function getAudioTitle(): Null<String> { | ||||
| 		return this.native.getAudioTitle(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function playAudio() { | ||||
| 		this.native.playAudio(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function stopAudio() { | ||||
| 		this.native.stopAudio(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function ejectDisk() { | ||||
| 		this.native.ejectDisk(); | ||||
| 	} | ||||
| 
 | ||||
| 	public inline function getDiskID(): Int { | ||||
| 		return this.native.getDiskID(); | ||||
| 	} | ||||
| } | ||||
| @ -1,6 +1,5 @@ | ||||
| package kernel.peripherals; | ||||
| 
 | ||||
| import kernel.net.INetworkInterface; | ||||
| import kernel.peripherals.Modem; | ||||
| import kernel.peripherals.Screen; | ||||
| 
 | ||||
| @ -19,6 +18,7 @@ class Peripheral { | ||||
| 
 | ||||
| 	private var screens: Array<Screen> = []; | ||||
| 	private var modes: Array<Modem> = []; | ||||
| 	private var drives:Array<Drive> = []; | ||||
| 
 | ||||
| 	@:allow(kernel.Init) | ||||
| 	private function new() { | ||||
| @ -63,4 +63,20 @@ class Peripheral { | ||||
| 		var allModems = cc.Peripheral.getNames().toArray().filter(s -> cc.Peripheral.getType(s) == "modem"); | ||||
| 		this.modes = allModems.map(s -> return new Modem((cc.Peripheral.wrap(s) : Dynamic), s)); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 		Get all connected drives. | ||||
| 	**/ | ||||
| 	public function getDrives(): Array<Drive> { | ||||
| 		return this.drives; | ||||
| 	} | ||||
| 
 | ||||
| 	public function getDrive(addr: String): Null<Drive> { | ||||
| 		return this.drives.find(item -> item.getAddr() == addr); | ||||
| 	} | ||||
| 
 | ||||
| 	private function findDrives() { | ||||
| 		var allDrives = cc.Peripheral.getNames().toArray().filter(s -> cc.Peripheral.getType(s) == "drive"); | ||||
| 		this.drives = allDrives.map(s -> return new Drive((cc.Peripheral.wrap(s) : Dynamic), s)); | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user