001 package com.github.sarxos.webcam.ds.ipcam.device.zavio;
002
003 import java.awt.Dimension;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006
007 import com.github.sarxos.webcam.WebcamException;
008 import com.github.sarxos.webcam.ds.ipcam.IpCamDevice;
009 import com.github.sarxos.webcam.ds.ipcam.IpCamMode;
010
011
012 /**
013 * B7210 2M Bullet IP Camera from Zavio.
014 *
015 * @author Bartosz Firyn (SarXos)
016 */
017 public class B7210 extends IpCamDevice {
018
019 public static final Dimension SIZE_HD_1080 = new Dimension(1280, 1024);
020 public static final Dimension SIZE_43_960 = new Dimension(1280, 960);
021 public static final Dimension SIZE_QVGA = new Dimension(320, 240);
022
023 //@formatter:off
024 private static final Dimension[] SIZES = new Dimension[] {
025 SIZE_HD_1080,
026 SIZE_43_960,
027 SIZE_QVGA,
028 };
029 //@formatter:on
030
031 private URL base = null;
032
033 public B7210(String name, String urlBase) {
034 this(name, toURL(urlBase));
035 }
036
037 public B7210(String name, URL base) {
038 super(name, null, IpCamMode.PULL);
039 this.base = base;
040 }
041
042 @Override
043 public Dimension[] getResolutions() {
044 return SIZES;
045 }
046
047 @Override
048 public void setResolution(Dimension size) {
049
050 int index = -1;
051 for (int i = 0; i < SIZES.length; i++) {
052 if (SIZES[i].equals(size)) {
053 index = i;
054 break;
055 }
056 }
057
058 if (index == -1) {
059 throw new IllegalArgumentException(String.format("Incorrect size %s", size));
060 }
061
062 super.setResolution(size);
063 }
064
065 @Override
066 public URL getURL() {
067
068 int index = -1;
069 for (int i = 0; i < SIZES.length; i++) {
070 if (SIZES[i].equals(getResolution())) {
071 index = i;
072 break;
073 }
074 }
075
076 int res = 0;
077 switch (index) {
078 case 0:
079 res = 0;
080 break;
081 case 1:
082 res = 3;
083 break;
084 case 2:
085 res = 4;
086 break;
087 }
088
089 long time = System.currentTimeMillis();
090
091 String url = String.format("%s/cgi-bin/view/image?pro_%d&%d", base, res, time);
092 try {
093 return new URL(url);
094 } catch (MalformedURLException e) {
095 throw new WebcamException(String.format("Incorrect URL %s", url), e);
096 }
097 }
098
099 }